0

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

我的代码:

    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”。但是当我在我的真实设备(三星GT-P3110)上运行我的应用程序时,我有吐司“onCreate”,“onState”然后是“onResume。如果我按“home”按钮,我会看到 toast “onStop”和“onDestroy”。(我的应用程序在正在运行的应用程序列表中始终可见)如果我返回应用程序,它会看到“onCreate”-> onState”->“onResume”,就像它完全重新启动一样。

我不明白。你能启发我吗?

4

3 回答 3

1

Activity 代表您在应用程序运行时在手机上看到的屏幕,如果此屏幕消失,则您的 Activity 被销毁。

有关信息,请参阅本教程:

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

您可以阅读有关此内容的更多信息并运行活动 apk 示例,它将帮助您了解它的工作原理。(点击下载演示并在某个地方运行它,在虚拟机或手机上)

于 2013-10-21T14:09:25.990 回答
0

您的活动在停止时实际上已被破坏,摘录自此处

注意:系统在所有情况下都调用了 onPause() 和 onStop() 之后调用了 onDestroy(),但以下情况除外:

这种情况下的“除了一个”不适用于您,并且仅在从 onCreate() 方法调用 finish() 时才适用。其余摘录在上面链接的页面底部。

于 2013-10-21T14:14:20.747 回答
0

除了下面的注释之外,您还可以使用以下方法区分 BACK 和 HOME 按钮:

void onSaveInstanceState(Bundle outState)

当您按下 HOME 按钮而不是 BACK 按钮时调用。

于 2013-10-21T14:25:35.023 回答