其他分享
首页 > 其他分享> > android活动生命周期函数的基础知识

android活动生命周期函数的基础知识

作者:互联网

我正在测试这段代码,它显示了一个活动所处的状态

public class Activity101Activity extends Activity {
    String tag  =  "Lifecycle";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        // setContentView(R.layout.main);
        setContentView(R.layout.activity_activity101);
        Log.d(tag , "In the onCreate() event");
    }
    public void onStart()
    {
        super.onStart();
        Log.d(tag , "In the onStart() event");
    }

    public void onRestart()
    {
         super.onRestart();
        Log.d(tag , "In the onRestart() event");
    }

    public void onResume()
    {
         super.onResume();
        Log.d(tag , "In the onResume() event");
    }

    public void onPause()
    {
         super.onPause();
        Log.d(tag , "In the onPause() event");
    }

    public void onStop()
    {
         super.onStop();
        Log.d(tag , "In the onStop() event" );
    }

    public void onDestroy()
    {
         super.onDestroy();
        Log.d(tag , "In the onDestroy() event");
    }
}  

所以我看到只有当活动在屏幕上时按下后退按钮才会调用onDestroy(),否则永远不会调用它.因此,如果我在活动运行时按下主页按钮,它应该在后台运行.但是,如果我去设置 – >应用 – >跑步我无法在列表中看到它.那么这是否意味着它在后台运行?

同样,再次,此代码显示onPause()始终后跟onStop(),而onStart()后跟onResume().那么为什么它们在Android环境中被定义为不同的功能而没有合并?

解决方法:

一旦活动进入后台,它就处于暂停模式.所以你在运行应用程序列表中看不到它.一旦你重新启动这样的暂停应用程序,它就会从backstack进入前台并开始运行.它被保留在后台以保持其状态并从它停止的地方恢复,然后进入后台.

要了解原因,在onResume之前需要onStart,请点击以下链接.它会清楚地清除你所有的疑惑:

Difference between onStart() and onResume()

标签:android,android-activity,android-lifecycle,activity-lifecycle
来源: https://codeday.me/bug/20190725/1533415.html