是否有可能杀死“android:persistent = true”系统级应用?

是否有可能杀死“android:persistent = true”系统级应用?,第1张

概述我有一个应用程序,它只是一个启动时启动的服务.我正在系统级开发,所以我使用 android:persistent = true以确保我的服务不会在内存压力下被杀死. 但是,我发现这可以防止我在任何条件下杀死我的服务.我仍然希望能够自己杀死它 – 有没有办法做到这一点,还是不可能,因为清单中定义了“persistent = true”? 如果这是不可能的,我还能如何保护我的过程免受内存压力下的死亡? 我有一个应用程序,它只是一个启动时启动的服务.我正在系统级开发,所以我使用 android:persistent = true以确保我的服务不会在内存压力下被杀死.

但是,我发现这可以防止我在任何条件下杀死我的服务.我仍然希望能够自己杀死它 – 有没有办法做到这一点,还是不可能,因为清单中定义了“persistent = true”?

如果这是不可能的,我还能如何保护我的过程免受内存压力下的死亡?我可以手动定义优先级吗?也许是oom_score或者其他什么?

解决方法 弄清楚了.大多数停止服务的方法都不会阻止持久标志重新启动它.这包括stopService,killBackgroundService,甚至System.exit(0);

ActivityManagerService中有一个名为forceStopPackage的隐藏函数,您可以通过反射通过ActivityManager接口调用它.需要系统权限,但如果您使用持久性,则不应该是一个问题.

在清单中:

<uses-permission androID:name="androID.permission.FORCE_Stop_PACKAGES" tools:ignore="ProtectedPermissions"></uses-permission>

这会杀死这个过程.给它命名过程/包.

try {        Class c;        c = Class.forname("androID.app.ActivityManager");        Method m = c.getmethod("forceStopPackage",new Class[]{String.class});        Object o = m.invoke(null,new Object[]{"com.your.process"});    }catch (Exception e){            Log.e(TAG,"Failed to kill service",e);}
总结

以上是内存溢出为你收集整理的是否有可能杀死“android:persistent = true”系统级应用?全部内容,希望文章能够帮你解决是否有可能杀死“android:persistent = true”系统级应用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存