我的应用有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()
?
答案 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()
电话即可。只有在你想破坏活动时才需要它。