儲存記憶體修整資料
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 物件中提取舊值,而不是從頭開始重新建立它們