Android 不断缓存我的意图 Extras,如何声明保留新鲜附加值的挂起意图

android

1个回答

写回答

chchmimi

2025-08-20 00:45

+ 关注

Android
Android

如何声明保留新鲜附加值的挂起意图

Android开发中,意图(Intent)是不可或缺的一部分,它用于在不同组件之间传递信息和启动活动。在有些情况下,我们可能需要保留意图的附加值,以便在稍后使用。本文将介绍如何声明保留新鲜附加值的挂起意图,并提供一个案例代码来说明。

1. 什么是挂起意图?

挂起意图是指在活动(Activity)被销毁并重新创建后,仍然保留附加值的意图。它可以用于在活动重新创建后恢复之前的状态或数据。通常情况下,当设备配置发生变化(如屏幕旋转)或由于内存不足而导致活动被销毁并重新创建时,意图的附加值会丢失。通过声明挂起意图,我们可以在活动重新创建后恢复附加值,避免数据丢失。

2. 如何声明挂起意图?

要声明挂起意图,我们可以使用意图的saveInstanceState()方法和onCreate()方法。saveInstanceState()方法用于保存附加值,而onCreate()方法用于恢复附加值。下面是一个示例代码来说明如何声明挂起意图:

Java

public class MAInActivity extends AppCompatActivity {

private static final String EXTRA_DATA = "extra_data";

private String mData;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_mAIn);

if (savedInstanceState != null) {

mData = savedInstanceState.getString(EXTRA_DATA);

}

// 其他初始化操作

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putString(EXTRA_DATA, mData);

}

}

在上面的代码中,我们定义了一个常量EXTRA_DATA用于作为附加值的键,同时声明了一个成员变量mData来保存附加值。在onCreate()方法中,我们检查savedInstanceState是否为空,如果不为空则说明活动是由于配置变化被重新创建的,我们通过getString()方法从savedInstanceState中恢复附加值。在onSaveInstanceState()方法中,我们使用putString()方法将附加值保存到outState中。

案例代码

下面是一个案例代码,演示了如何声明保留新鲜附加值的挂起意图。假设我们有一个应用程序,其中包含两个活动:MAInActivity和DetAIlActivity。MAInActivity显示一个列表,点击列表项会跳转到DetAIlActivity并传递一些数据。

MAInActivity.Java

Java

public class MAInActivity extends AppCompatActivity {

private static final String EXTRA_DATA = "extra_data";

private ListView mListView;

private ArrayList<String> mDataList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_mAIn);

mListView = findViewById(R.id.list_view);

mDataList = new ArrayList<>();

mDataList.add("Item 1");

mDataList.add("Item 2");

mDataList.add("Item 3");

ArrayAdapter<String> adapter = new ArrayAdapter<>(this,

Android.R.layout.simple_list_item_1, mDataList);

mListView.setAdapter(adapter);

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

String data = mDataList.get(position);

Intent intent = new Intent(MAInActivity.this, DetAIlActivity.class);

intent.putExtra(EXTRA_DATA, data);

startActivity(intent);

}

});

if (savedInstanceState != null) {

mDataList = savedInstanceState.getStringArrayList(EXTRA_DATA);

}

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putStringArrayList(EXTRA_DATA, mDataList);

}

}

DetAIlActivity.Java

Java

public class DetAIlActivity extends AppCompatActivity {

private static final String EXTRA_DATA = "extra_data";

private TextView mTextView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_detAIl);

mTextView = findViewById(R.id.text_view);

Intent intent = getIntent();

if (intent != null) {

String data = intent.getStringExtra(EXTRA_DATA);

mTextView.setText(data);

}

}

}

在上面的代码中,我们在MAInActivity的onItemClick()方法中创建了一个Intent,并将选定的列表项的数据作为附加值传递给DetAIlActivity。在DetAIlActivity的onCreate()方法中,我们通过getStringExtra()方法获取附加值,并设置给TextView显示。

当MAInActivity被销毁并重新创建时,我们通过onSaveInstanceState()方法将数据保存到outState中,并在onCreate()方法中恢复附加值。

Android开发中,声明挂起意图可以帮助我们保留附加值,避免数据丢失。通过使用saveInstanceState()方法和onCreate()方法,我们可以在活动重新创建后恢复之前的状态或数据。在上面的示例代码中,我们演示了如何声明保留新鲜附加值的挂起意图,并提供了一个简单的应用程序来说明用法。希望本文对你有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号