Android 在修剪内存时保存数据
示例
public class ExampleActivity extends Activity { private final static String EXAMPLE_ARG = "example_arg"; private int mArg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_example); if(savedInstanceState != null) { mArg = savedInstanceState.getInt(EXAMPLE_ARG); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(EXAMPLE_ARG, mArg); } }
说明
那么,这里发生了什么?
Android系统将始终努力清除尽可能多的内存。因此,如果您的活动降到了后台,而另一个前台活动要求分享,那么Android系统会调用onTrimMemory()您的活动。
但这并不意味着您所有的财产都应消失。您应该做的就是将它们保存到Bundle对象中。捆绑对象在内存方面要好得多。在包中,每个对象都由唯一的文本序列标识-在上面的示例中,整数值变量mArg以引用名称保存EXAMPLE_ARG。并且当重新创建活动时,请从Bundle对象中提取旧值,而不是从头开始创建它们。