【问题标题】:Stop service on swipe to remove滑动时停止服务以删除
【发布时间】:2014-06-11 12:56:42
【问题描述】:

通过滑动从最近打开的应用程序列表中杀死应用程序。

在我的应用程序中,
只有当应用程序在前台后台可用时,我才在后台运行服务。如果用户通过按下手机的主页按钮在后台发送应用程序,那么服务也应该运行


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

  • 我的要求:
    当应用程序要从最近打开的应用程序中删除时,我会 停止已在后台运行的服务

    • 面临的问题:
      1) 我有 N 项活动...
      2) 我也想知道你什么时候应用程序要从最近的列表中删除。 Android OS 甚至没有调用 onDestroy() 方法。活动堆栈中的活动。

【问题讨论】:

    标签: android android-lifecycle activity-lifecycle


    【解决方案1】:

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

    2.或者在manifest文件中,也可以加上stopwithtask=true

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

    3.或者你也可以检查'onTaskRemoved'是否被调用。onTaskRemoved doc

    【讨论】:

    • 我有 N 个活动... 2) 我无法在 onDestroy() 取消服务...因为服务应该只在上述情况下取消。
    • 我也想知道你。即使应用程序要从最近的列表中删除。 Android OS 未调用堆栈中任何 Activity 的 onDestroy() 方法。
    【解决方案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" />
    

    希望成功

    【讨论】:

    • 所以这是从服务中调用的......很聪明,因为您无法从活动中控制它。这始终取决于服务是bound 还是started
    【解决方案3】:

    你应该在你的清单中添加权限

     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>
    

    【讨论】:

    • 让我知道当应用程序要杀死时,是否有任何方法会被调用...在内置广播或接口等中
    猜你喜欢
    • 2015-02-14
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    相关资源
    最近更新 更多