为什么调用onDestroy()方法?

时间:2011-11-24 09:07:41

标签: android timer ondestroy

我的应用有3个课程。第一类是启动画面,第二类包含播放列表列表和播放列表内容的第三类。当选择播放列表时,第三类开始显示播放列表内容。在第二堂课我有:

@Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop Playlist!!!!");
    }

    protected void onDestroy() {
        super.onDestroy();
        System.out.println("onDestroy Playlist");
    }

当第三节准备好开始时,我会在DDMS上收到消息:"onStop Playlist!!!!""onDestroy Playlist"。为什么要调用此方法?不应该只调用onPause方法?问题是我想在应用程序完成时停止一些计时器,但我不知道在这种情况下我可以在哪里停止计时器。有什么想法吗?

我这样称呼第三类:

Intent i = new Intent(getBaseContext(), ViewPlaylist.class);
i.putExtra("id", idPlaylist[position]);
i.putExtra("timer", timerPlaylist[position]);
startActivity(i);
finish();

问题是我打电话给finish()

3 个答案:

答案 0 :(得分:3)

如果您阅读了Activity课程的文档(针对onDestroy()方法),则会看到:

  

在您的活动被销毁之前收到的最后一个电话。这个可以   之所以发生,是因为活动正在结束(有人叫   在它上面完成(),或者因为系统正在暂时破坏它   节省空间的活动实例。你可以区分   这两个场景使用isFinishing()方法。

答案 1 :(得分:0)

因为您正在使用finish()完成第二项活动。所以不要在第二个活动中使用startActivityForResult()并覆盖onActivityResult(),所以在这种情况下,您的第二个活动onPause()将被调用,当您finish()第三个活动时,您可以返回你的第二个活动的onActivityResult()方法()

试试这段代码......

Intent i = new Intent(getBaseContext(), ViewPlaylist.class);
i.putExtra("id", idPlaylist[position]);
i.putExtra("timer", timerPlaylist[position]);
startActivityForResult(i,RESULT_OK);

答案 2 :(得分:0)

是的,您致电finish()。这将完成,从而破坏该活动。只需删除finish()电话即可。只有在你想破坏活动时才需要它。