Android 12新增了Activity重建功能,可以让应用程序在系统恢复资源时更快地重建Activity。此功能基于API 31。
使用此功能需要在manifest文件中声明以下权限:
此外,在Activity中,可以将以下属性添加到manifest文件中的
android:alwaysRetainTaskState="true"
这将使Activity保留其任务状态,即使销毁和重建都可以保持。
为了使Activity更快地重建,可以在Activity中覆盖onSaveInstanceState()方法,并在其中保留应用程序状态。然后,在onCreate()方法中恢复这些状态。
示例代码:
public class MainActivity extends AppCompatActivity {
private int mCounter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
mCounter = savedInstanceState.getInt("counter");
}
TextView counterTextView = findViewById(R.id.counter_text_view);
counterTextView.setText("Counter: " + mCounter);
Button incrementButton = findViewById(R.id.increment_button);
incrementButton.setOnClickListener(v -> {
mCounter++;
counterTextView.setText("Counter: " + mCounter);
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("counter", mCounter);
}
}