首页 > 解决方案 > 在生命周期事件期间,活动是否会在 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);
    }
}

根据Android生命周期方法的官方文档

调用该方法onSaveInstanceState(...)是为了让应用程序有时间在进入后台之前保存其当前状态。但是CustomActivity当前加载到内存中的对象会发生什么?它是否也与生命周期事件一起被创建和销毁?或者它是否永久保存在内存中(只要应用程序仍然处于活动状态 - 即使它在后台)并且它会在时间到来时简单地“重新连接”?

换句话说,在整个 Android 应用程序的整个生命周期中(从用户最初打开它,到用户在任务管理器/菜单屏幕中滑动它后关闭它)myIntVar只会设置一次,还是多次?

标签: androidandroid-lifecycle

解决方案


它是否也与生命周期事件一起被创建和销毁?

是的。

或者它是否永久保存在内存中(只要应用程序仍然处于活动状态 - 即使它在后台)并且它会在时间到来时简单地“重新连接”?

不。

myIntVar 将只设置一次还是多次?

对于任何给定的CustomActivity实例,一次。在所有CustomActivity实例中,多次。


推荐阅读