如何通过在Android中刷卡杀死应用程序时处理代码?如果我的应用程序正在运行,我按下主页按钮,应用程序进入后台。现在,如果长按home键并从最近的应用程序列表刷卡它杀死的应用程序,没有人像的事件onPause(),onStop()或者onDestroy()被调用,而该过程被终止。因此,如果我希望我的服务停止,杀死通知和取消注册听众,我该怎么做?我阅读了不少文章和博客,但没有得到任何有用的信息,我没有找到任何有关它的文档。任何帮助,将不胜感激。提前致谢。
3 回答

慕桂英546537
TA贡献1848条经验 获得超10个赞
我刚刚解决了类似的问题。
如果通过从最近的应用程序列表中轻扫应用程序而终止服务,那么您可以执行以下操作。
里面你的清单文件,守旗stopWithTask
的true
维修。喜欢:
<service android:name="com.myapp.MyService" android:stopWithTask="true" />
但正如你所说,你想取消注册听众并停止通知等,我会建议这种方法:
里面你的清单文件,守旗
stopWithTask
的false
维修。喜欢:<service android:name="com.myapp.MyService" android:stopWithTask="false" />
现在在您的
MyService
服务中,覆盖方法onTaskRemoved
。(只有在stopWithTask
设置为时才会触发false
)。public void onTaskRemoved(Intent rootIntent) { //unregister listeners //do any other cleanup if required //stop service stopSelf(); }
请参阅我的问题以获取更多详细信息,其中也包含其他部分代码。
希望这可以帮助。

汪汪一只猫
TA贡献1898条经验 获得超8个赞
找到了一种方法来做到这一点
像这样做一个服务
public class OnClearFromRecentService extends Service {@Overridepublic IBinder onBind(Intent intent) { return null;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) { Log.d("ClearFromRecentService", "Service Started"); return START_NOT_STICKY;}@Overridepublic void onDestroy() { super.onDestroy(); Log.d("ClearFromRecentService", "Service Destroyed");}@Overridepublic void onTaskRemoved(Intent rootIntent) { Log.e("ClearFromRecentService", "END"); //Code here stopSelf();}
}
2)在manifest.xml中注册此服务
<service android:name="com.example.OnClearFromRecentService" android:stopWithTask="false" />
3)然后在您的启动活动上启动此服务
startService(new Intent(getBaseContext(), OnClearFromRecentService.class));
现在每当你从android最近清除你的应用程序然后这个方法onTaskRemoved()将执行。
- 3 回答
- 0 关注
- 664 浏览
添加回答
举报
0/150
提交
取消