如何检查我是否暂停或退出Android应用程序

时间:2013-03-06 05:47:56

标签: android service android-activity

我正在为Android编写一个应用程序,当我退出或暂停应用程序时,我需要启动该服务。我该怎么办?在我的应用程序中,每次单击某个东西时,它都将转到另一个活动,因此我无法将startservice放入这些活动中的onpause。我该怎么办?

4 个答案:

答案 0 :(得分:0)

在这里查看活动生命周期: http://developer.android.com/reference/android/app/Activity.html

Android启动新活动时不会退出活动,只是暂停活动。所以在onPause()中启动服务应该没问题。

答案 1 :(得分:0)

根据android生命周期,onPause()方法将调用作为用户离开您的活动的第一个指示。它可能会离开或不离开。因此,根据您的要求,您可以startService.但请确保不要在内部放置大量代码,因为这可能会影响用户体验。

答案 2 :(得分:0)

通过覆盖此方法,您可以检查您的应用是否为onPause或onDestroy

protected void onPause() {
    Log.i("Status", "onPause");
    super.onPause();
}

protected void onDestroy() {
            Log.i("Status", "onDestroy");
    super.onDestroy();
}

答案 3 :(得分:0)

当“活动”不再可见时,会调用onStop()。但是我们还不能确定应用程序是否会被销毁,因为Android操作系统会在内部处理它。因此,请尝试按照以下步骤查找您的应用是否在background中:

  1. 使用

    获取正在运行的任务信息
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    
  2. 如果任务列表不为空,请检查运行的tak是否属于您的应用。如果它属于,则返回true给调用函数,在那里可以启动服务;否则返回false

     if (!tasks.isEmpty()) {
       ComponentName topActivity = tasks.get(0).topActivity;
      if (!topActivity.getPackageName().equals(context.getPackageName()))
      {
         return true;
      }
    
  3. 修改:这可能会有所帮助: http://developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses