为什么调用 onDestroy() 方法?

Gab*_*lle 4 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");
    }
Run Code Online (Sandbox Code Playgroud)

当第三堂课准备好开始时,我收到了 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();
Run Code Online (Sandbox Code Playgroud)

问题是我打电话finish()

Luk*_*rog 5

如果您阅读Activity该类的文档(对于onDestroy()方法)将看到:

在您的活动被销毁之前您收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用了 finish() ,或者因为系统暂时销毁了该活动的实例以节省空间)。您可以使用 isFinishing() 方法区分这两种情况。


use*_*305 1

这是因为您正在完成第二个活动finish()。所以不要在第二个活动中使用startActivityForResult()和覆盖onActivityResult(),所以在这种情况下你的第二个活动onPause(),因此在这种情况下,将调用finish(),当您进行第三个活动时,您可以返回到第二个活动的onActivityResult()method()

试试这个代码...

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