2014-06-11 58 views
2

从最近打开的应用程序列表中通过刷卡死亡的应用程序。在刷卡上停止服务删除

在我的应用程序,
我在后台运行服务只有当应用程序在前台背景可用。如果用户有通过按下移动主页按钮在后台发送应用程序,那么服务也应运行


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

  • 我的要求:
    当应用打算从最近打开的应用程序在那个时候,我会 一站式服务已经运行在backgound删除。

    • 面临问题:
      1)我有活动,N多......
      2)我也想知道你的是,当应用程序会从最近的列表中删除。 Android OS甚至没有调用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" /> 

希望其工作

+1

所以这是从服务调用...聪明,因为你无法控制它从一个活动。它总是取决于服务是“绑定”还是“启动”。 –

4

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

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

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

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

+0

我有活动,N多...... 2)我不能的onDestroy()取消服务......因为服务只应取消以上提到的情况。 –

+0

我也想知道你。即使应用程序将从最近的列表中删除。 Android OS不调用onDestroy()方法中的任何堆栈中的活动。 –

+0

请检查我的编辑。 – prijupaul

1

你应该使用这种方法我已经解决了我的问题,如果我有错误的话,我将结束我的服务添加权限在你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> 
+0

让我知道是否有任何方法,将在应用程序要杀时调用... inbuild广播或接口等 –