android– 处理三星SPCM杀手

android– 处理三星SPCM杀手,第1张

概述最近我们购买了一款带有Android5.1.1的全新GalaxyS6,我们遇到了一些新的三星SPCM内存管理器的麻烦.它正在积极关闭我们的应用程序的后台服务,即使设置为START_STICKY,它也没有重新启动.此外,该服务占用的内存不超过5MB,但我们仍以某种方式获得SPCM算法的最低分,并被选中被杀死.

最近我们购买了一款带有Android 5.1.1的全新galaxy S6,我们遇到了一些新的三星SPCM内存管理器的麻烦.它正在积极关闭我们的应用程序的后台服务,即使设置为START_STICKY,它也没有重新启动.

此外,该服务占用的内存不超过5MB,但我们仍以某种方式获得SPCM算法的最低分,并被选中被杀死.

这是我们的服务:

Public class IncomingService extends Service {    @OverrIDepublic int onStartCommand(Intent intent, int flags, int startID) {    super.onStartCommand(intent, flags, startID);    return START_STICKY;}@OverrIDepublic voID onCreate() {    if (mPhoneListener == null) {        mPhoneListener = new CallStateListener();        TelephonyManager tm = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);        tm.Listen(mPhoneListener, PhonestateListener.ListEN_CALL_STATE);}    /** * Listener for call states * Listens for different call states */private class CallStateListener extends PhonestateListener {    @OverrIDe    public voID onCallStateChanged(int state, String incomingNumber) {       // Doing something with incomingNumber    }}

在清单中:

    <service        androID:name="com.services.IncomingService"        androID:enabled="true"        androID:priority="999" >    </service>    

SPCM的日志查杀我们的服务:

Force stopPing com.special.app appID=10499 user=0: SPCM kill lowestscore package!03-18 22:48:11.280 3562-3562/? I/ActivityManager: Killing 2279:com.special.app/u0a499 (adj 8): stop com.special.app cause SPCM kill lowestscore package!03-18 22:48:11.280 3562-3562/? W/ActivityManager: Scheduling restart of crashed service com.special.app/com.services.IncomingService in 1000ms03-18 22:48:11.280 3562-3562/? I/ActivityManager:   Force stopPing service ServiceRecord{27d2c408 u0 com.special.app/com.services.IncomingService}

即使ActivityManager日志声明它正在为我们的服务重新安排重新启动,它实际上也不会重新启动.

我们已经看到了与其他应用程序(Facebook,TrueCaller等)相同的SPCM日志,但他们的服务以某种方式设法重新启动.

总而言之,我们的问题是:

>如何防止SPCM将我们的应用作为lowestscore包定位?
>如果我们成为攻击目标,如何确保我们的服务在被杀后成功重启?
>任何其他可以帮助我们的想法?

解决方法:

确保ActivityManager is not targeting your service too.

AFAIK没有其他方法可以确保生存而不是持续通知,这也是三星开发人员所说的.至于Facebook和TrueCaller,我没有答案.可能他们利用其他相关流程来恢复服务.

至于受影响的设备,我最早看到的是带有5.0.2的galaxy Tab S SM-T805.很多5.1.1三星设备也有SPCM.我们最初也在S6上复制了这个问题,我可以确认它仍然存在于6.0.1.

至于文档,this Samsung forums topic尽可能地进行.

对于测试和复制步骤,我建议:

>确保设备实际上具有SPCM adb shell getprop | grep spcm.
>从任何电源拔下它.
>安装Tinycore以观察RAM使用情况(为其启用持久通知).
>加载大量RAM饥饿的应用程序,以降低您的服务分数.或者尝试Developer Toolbelt,它应该比手动填充快,但我还没有测试过.
>关闭屏幕并给设备15分钟.
> adb shell logcat -v threadtime | grep spcm确认进程被杀死.
>冲洗并重复直至成功.

总结

以上是内存溢出为你收集整理的android – 处理三星SPCM杀手全部内容,希望文章能够帮你解决android – 处理三星SPCM杀手所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存