滑动时停止服务以删除

时间:2014-06-11 12:56:42

标签: android android-lifecycle activity-lifecycle

通过轻扫从最近打开的应用程序列表中杀死了应用程序。

在我的申请中,
只有当应用程序在前台后台中可用时,我才会在后台运行运行服务。如果用户通过按移动设备的主页按钮在后台发送应用程序,则还应运行服务


但是当用户最近打开的应用程序中删除应用程序
1)从最近的应用列表中删除时是否会自动调用任何方法?
2)将调用哪种方法?

  • 我的要求:
    当应用程序要从当时最近打开的应用程序中删除时,我会 在背景中停止已经投放的服务
    • 问题面对:
      1)我有N个活动......
      2)我也想知道你的应用程序要从最近的列表中删除。 Android OS甚至没有调用onDestroy()方法。活动堆栈中的活动。

3 个答案:

答案 0 :(得分:4)

1.您可以在活动onDestroy方法中停止服务。

2.或在清单文件中,您还可以添加stopwithtask = true

<service 
    android:name="com.mycompany.TestService"
    android:stopWithTask="true" 
  />

3.or您还可以检查是否调用了'onTaskRemoved'。onTaskRemoved doc

答案 1 :(得分:2)

public boolean isAppRunning()
    {
        boolean appFound = false;
        final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

        for (RunningTaskInfo recentTask : recentTasks)
        {

            if (recentTask.baseActivity.getPackageName().equals("your.packagename"))
            {
                appFound = true;
                break;
            }

        }
        return appFound;
    }

使用这种方法我已经解决了我的问题,如果我弄错了,那么我将关闭我的服务。

需要添加权限:

<uses-permission android:name="android.permission.GET_TASKS" />

希望它有效

答案 2 :(得分:1)

您应该在表格中添加权限

 Like: android:excludeFromRecents="true"

 Code:<activity
        android:excludeFromRecents="true"
        android:name="Example.com.MainActivity"
        android:label="@string/app_name" >
          <intent-filter>
             <action android:name="android.intent.action.MAIN" />                       
             <category android:name="android.intent.category.LAUNCHER"/>
         </intent-filter>
      </activity>