android - 在生命周期事件期间,活动是否会在 Android 中被销毁和重新创建?还是他们只是“重新连接”?
问题描述
让我们考虑以下示例子类Activity
public class CustomActivity extends Activity
{
private int myIntVar;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom);
if (myIntVar == 0)
{
Random rand = new Random();
int min = 1;
int max = 100;
myIntVar = rand.nextInt((max+1) - min) + min;
}
}
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
}
}
调用该方法onSaveInstanceState(...)
是为了让应用程序有时间在进入后台之前保存其当前状态。但是CustomActivity
当前加载到内存中的对象会发生什么?它是否也与生命周期事件一起被创建和销毁?或者它是否永久保存在内存中(只要应用程序仍然处于活动状态 - 即使它在后台)并且它会在时间到来时简单地“重新连接”?
换句话说,在整个 Android 应用程序的整个生命周期中(从用户最初打开它,到用户在任务管理器/菜单屏幕中滑动它后关闭它)myIntVar
只会设置一次,还是多次?
解决方案
它是否也与生命周期事件一起被创建和销毁?
是的。
或者它是否永久保存在内存中(只要应用程序仍然处于活动状态 - 即使它在后台)并且它会在时间到来时简单地“重新连接”?
不。
myIntVar 将只设置一次还是多次?
对于任何给定的CustomActivity
实例,一次。在所有CustomActivity
实例中,多次。
推荐阅读
- python - 熊猫仅在所有相似值都有效时才更新数据框
- ios - 在 UICollectionView 中滚动时绕过 UIScrollViewDelegate
- angular - 为什么不把 ChangeDetectionStrategy.OnPush 放在每个组件上呢?
- python - python中的矩阵拆分和乘法
- build - clearcase 动态视图构建需要很长时间
- c# - 在 MVC Core DI 中注册服务集合
- android - Coroutines Kotlin 中 Job 和 Deferred 的区别
- c - 如何在 lex.l 文件之外使用 flex 函数?
- testing - 如何在多个奴隶之间分配一份詹金斯工作
- reactjs - 如何在不使用任何第三方库的情况下在 React 组件中播放本地视频