了解android活动生命周期

时间:2013-10-21 14:04:44

标签: android android-activity activity-lifecycle

我的android活动的生命周期有问题。当我按下“home”按钮时,函数onDestroy()正在调用。 我测试了一个简单的hello world和Toast on callback函数。

我的代码:

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "onCreate", Toast.LENGTH_SHORT).show();
}

    @Override
    protected void onRestart(){
        super.onRestart();
Toast.makeText(getApplicationContext(), "onRestart", Toast.LENGTH_SHORT).show();
    }

    @Override 
    protected void onStart(){
        super.onStart();
Toast.makeText(getApplicationContext(), "onStart", Toast.LENGTH_SHORT).show();
    }

    @Override 
    protected void onResume(){
        super.onResume();
Toast.makeText(getApplicationContext(), "onResume", Toast.LENGTH_SHORT).show();
    }
    @Override 
    protected void onStop(){
        super.onStop();
        Toast.makeText(getApplicationContext(), "onStop", Toast.LENGTH_SHORT).show();
    }
    @Override
    protected void onDestroy(){
    super.onDestroy();
Toast.makeText(getApplicationContext(), "onDestroy", Toast.LENGTH_SHORT).show();
}
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
编辑:当我运行我的应用程序时,我有吐司“onCreate”,“onState”然后“onResume。如果我按”home“但是我看到吐司”onStop“。如果我返回我的应用程序我有吐司“onStart”和“onResume”。 但是当我在我的真实设备(Samsung GT-P3110)上运行我的应用程序时,我有toast“onCreate”,“onState”然后“onResume。如果我按下”home“但我看到吐司”onStop“和”onDestroy“ 。(我的应用程序总是在运行的应用程序列表中可见)如果我返回应用程序,它会看到“onCreate” - > onState“ - > “onResume”就像它完全重启一样。

我不明白。 你能告诉我吗?

3 个答案:

答案 0 :(得分:1)

活动表示您在应用运行时在手机上看到的屏幕,如果此屏幕消失,则表示您的活动已被销毁。

请参阅本教程获取信息:

http://developer.android.com/training/basics/activity-lifecycle/starting.html

你可以阅读更多关于这个并运行活动的apk样本,它将帮助你很好地理解它是如何工作的。 (单击“下载演示并在某个位置,在VM或手机上运行”)

答案 1 :(得分:0)

您的活动在停止时实际销毁,摘录自here

  

注意:系统在除了一个之外的所有情况下调用onPause()和onStop()之后调用onDestroy():

此实例中的“除了一个”不适用于您,并且仅在从onCreate()方法调用finish()时才会应用。摘录的其余部分位于上面链接的页面底部。

答案 2 :(得分:0)

除了以下评论之外,您还可以使用以下方法区分BACK和HOME按钮:

void onSaveInstanceState(Bundle outState)
按下HOME按钮而不是BACK按钮时,

被调用。