2012-05-03 80 views
1

我的应用程序正常运行后,在后台仍然在运行,当我对一些新的活动而移动我使用的代码作为如何关闭我的应用程序被关闭

Intent start=new Intent(current activity.this,new activity.class); 
       startActivityForResult(start, 0); 
       finish(); 

,然后当我不得不搬回到以前的活动我用下面的代码

Intent start = new Intent(current activity.this,earlier activity.class); 
        startActivity(start); 
        finishActivity(0); 

我想这样活动的堆栈可能很清楚。并点击按钮或手机后退按钮我用下面的代码

Intent startMain = new Intent(Intent.ACTION_MAIN); 
       startMain.addCategory(Intent.CATEGORY_HOME); 
       startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(startMain); 

但我的应用程序仍在后台运行。我也使用了android:noHistory="true"应用程序从背景中被杀害,但消息强烈地关闭了该应用程序。简单finish();移动到最后一个活动。 我也看到了链接Quitting an application - is that frowned upon?但我新,所以我以前不得到多少。请给我一些建议,我该如何处理这个问题。

+4

有没有要搞乱可恢复的整个概念的原因[任务](http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html)和自动管理应用程序生命周期? – zapl

+0

我有8个活动和控制从一个移动到另一个。没有特别的理由。 – BraveGirl

回答

1

我觉得这样的活动叠层可以清楚

欢迎您到您的意见。 startActivityForResult()不适合您如何使用它。

,按钮上的点击或手机背部按钮,我用下面的代码

我会解雇任何人谁我是谁做这个工作。

请遵循Android design guidelines for proper handling of the BACK button - 虽然我不存在完全同意,这是不是你在做什么要好得多。在用户眼里,BACK means back

但我的应用程序仍然在

只要你有没有泄露任何线程或服务,你的进程将运行在后台运行,但将不会消耗显著的CPU时间。 Android将在需要RAM时终止进程。这样,如果用户选择返回到应用程序,或一些应用程序中的其他需要运行(例如,AlarmManager事件,广播Intent),Android还不浪费CPU时间和电池寿命到餐桌的另一种方法。

请建议我一些方法,我怎么能解决这个问题。

刚刚离开的过程中独自一人,没有人会受到伤害。

+0

是否有在后台应用程序的任何退后。该应用程序正在运行吗? – BraveGirl

+0

@BraveGirl:“那个应用程序正在运行吗?” - 这取决于你的意思是“跑步”。如果你有自己的后台线程仍在运行,那么这些线程将继续执行他们的工作,因此寻找时间来阻止这些线程是非常重要的。除此之外,尽管如此,没有什么代码会执行。那么用户的主要成本就是你正在使用的内存块,并且只要内存使用得更好,Android就会终止你的进程。 – CommonsWare

+0

是的我在应用程序中为计时器使用了一个线程,那么我该如何停止该线程。你能告诉我如何正确地停止这些线程。运行意味着它在后台,我从任务管理器中检查它。 – BraveGirl