在刷卡一条龙服务,删除(Stop service on swipe to remove)

2019-10-20 06:54发布

软件,即可通过刷卡从最近打开的应用程序列表中丧生。

在我的应用程序,
我在后台运行服务 ,只有当应用程序在前台后台 可用 。 如果用户通过按下移动随后也服务的home键发送的后台应用程序应该运行


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

  • 我的要求:
    当应用程序会从最近打开的应用程序在那个时候,我会停止这已经是 backgound 运行服务中删除。

    • 面对的问题:
      1)我有活动,N多...
      2)我也想知道你的是,当应用程序会从最近的列表中删除。 Android操作系统不叫的onDestroy()方法均匀。 活动是在活动堆栈。

Answer 1:

1.You可以在活动的onDestroy方法停止该服务。

2.or在manifest文件中,你还可以添加stopwithtask =真

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

3.or你也可以检查是否“onTaskRemoved”被调用。 onTaskRemoved DOC



Answer 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" />

希望它的工作



Answer 3:

你应该添加的许可,您manifets

 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>


文章来源: Stop service on swipe to remove