2013-08-17 56 views

回答

2

由于@Ozair正确地询问,它取决于您定义的内容为closing of app

你可以根据不同的需要以下的一种或两种:

  1. 如果你想使用后退按钮来检测应用程序关闭,然后从你的最后一次活动中,你可以检测通过覆盖onBackPressed函数按BACK按钮。在那里你可以减少你的价值。

  2. 如果您还在考虑按下HOME按钮进入背景时的情况,那么在您的活动中,您将必须检测到HOME按钮被按下。有很多解决方案,没有更多的工作来检测HOME按钮,但this回答How can I detect user pressing HOME key in my activity?问题似乎为我工作。 因此,您可以检测HOME按钮并减少您可以在SharedPreferece中保存的值。

可以有其他情况下,你打电话给finish()并关闭你最后的活动。你的问题还不清楚你是否也在考虑这个案例。

希望这给你一些机会来思考它。

+0

我想把关闭应用程序定义为正在处理它的进程。我的目标是每次应用程序运行时下载文件 - 在我的情况下,当应用程序未处于活动状态时,无法下载大文件。 –

+1

再次通过杀死你是指'强制停止'还是被操作系统杀死?或者你的意思是应用程序正在被用户关闭。 –

+0

嗯,我会对每一种情况感兴趣,但主要是当用户关闭应用程序时的情况 –

1

问题是你的意思是什么“关闭”?
如果关闭所有活动,则应用程序进程可能仍在运行。如果你的意思是“关闭”只是关闭你所有的活动。您可以为所有打开的活动定义一个“计数”,您可以将其存储在数据库或SharePerference中。我认为你可以做如下(假的码):
在你的项目,你应该定义BasicActivity:

public class BasicActivity extends Activity { 
    onCreate() { 
     mPreference.incActivityCount();//++ 
     super.onCreate(); 
    } 

    onDestory() { 
     mPreference.decActivityCount();//-- 
     if(mPreference.getActivity() == 0) { 
      //All being opened Activities have been closed. 
      onAppHasNoUIs(); 
     } 
     super.onDestory(); 
    } 

    onAppHasNoUIs() { 
      //All being opened Activities have been closed. 
    } 
} 
相关问题