4

我的应用程序有 3 个类。第一类是启动屏幕,第二类包含播放列表列表,第三类包含播放列表的内容。When a playlist is selected that third class get started to show the playlist content. 在第二堂课上,我有:

@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()

4

3 回答 3

5

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

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

于 2011-11-24T09:18:17.037 回答
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);
于 2011-11-24T09:17:03.603 回答
0

是的,你打电话finish()。这将完成,从而破坏该活动。只需删除finish()呼叫。只有当你想销毁一个活动时才需要它。

于 2011-11-24T09:35:40.700 回答