2011-11-24 81 views
3

我的应用程序有3个类。第一类是闪屏,第二类包含播放列表的列表,第三类是播放列表的内容。当选择播放列表时,第三类开始显示播放列表内容。在第二类我:为什么调用onDestroy()方法?

@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"。为什么要调用这个方法?不应该只调用方法?问题是,我想停止一些计时器,当应用程序正在完成时,但我不知道在这种情况下,我可以停止计时器。任何想法?

我把这样的第三类:

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

的问题是,我打电话finish()

+0

它取决于你怎么叫第三课(开始第三项活动)如果你显示一些代码,那么我们可以帮助你 – user370305

+0

I e点了我的问题。 – Gabrielle

+0

你有没有试过我的答案? – user370305

回答

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

如果你读了Activity类(为onDestroy()方法)的文档会看到:

国际泳联l在你的活动被破坏之前打电话给你。这可能是因为活动正在完成(有人称为 finish(),或者因为系统暂时销毁此活动的实例以节省空间,您可以使用isFinishing()将这两个方案区分为 方法。

0

是的,你叫finish(),这将结束,从而摧毁该活动。只需卸下finish()电话。如果你想摧毁一个活动这只是必要的。

+0

在另一个项目中,每次我开始一个新的活动,我称之为完成()我解决了错误OOM – Gabrielle

+0

我删除了完成()但onStop仍然被称为...为什么? – Gabrielle

+0

@Gabrielle'onStop()'被调用,因为您的活动对用户不再可见,具有播放列表内容的类将覆盖它。这是Android应用程序的正常生命周期流程。在我的回答中,我提供了一个链接,您可以在这里阅读更多关于如何调用生命周期方法以及何时调用它们的信息。 – Luksprog

相关问题