随笔 - 239  文章 - 0  评论 - 623  阅读 - 97万

由360手机卫士谈起——让你的service获取最高权限。

近日来,我在倒腾360手机卫士的时候,发现,你无论是把他数据清空,还是把它强行停止以后,甚至是把它卸载以后,它的service都没有被Android的系统干掉,依然是岿然不动了。我就感到了纳闷了,后来和群里的大牛讨论后,才知道360手机卫士真他妈的流氓,它是靠第三方的应用,360手机卫士将其开启。这就引出了,我们今天的话题,说一说service的重启方式,从而获取到最高的权限了。


1. 在service的OnDestroy中重新start service。

正规的stopservice的退出后,都会调用OnDestroy方法了,咦,我们何不在此方法后调用start service了,要想保证一个service被杀死后能够自己重新启动(重生),只需要在onDestroy函数中加上一些代码即可。以上面的例子来说明:

public void onDestroy(){  
    Log.i(TAG,"onDestroy");  
    .................  
      
    Intent localIntent new Intent();  
    localIntent.setClass(this, MusicService.class); // 销毁时重新启动Service  
    this.startService(localIntent);  
}  

这种方法也不是很好了,当你把service伴随的主进程停掉以后,它依然会把service干掉。

2.在manifest清单文件中配置使其service不死。

我们从TRACE中可以验证,service执行了onCreate,onStart(没有看到onDestroy的TRACE,应该是执行了的)。如果想让服务不被杀死(也即无动作不改变),在XML的<application段后面加上 android:persistent="true"就行了。

这种方法也不是 万能的,有些手机他偏偏能够停掉该service。

3.利用第三方应用start service

这种方法可以说是万能的,但是要确保用户能够安装你依附第三方应用,而且是不折不扣的流氓行为。

4.通过Receiver起应用

注册BroadcastReceiver两种方式:方式一,静态的在AndroidManifest.xml中用<receiver>标签声明注册,并在标签内用<intent- filter>标签设置过滤器,如上的开机自启动方式。方式二,动态地在代码中先定义并设置好一个 IntentFilter对象,然后在需要注册的地方调 Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果用动态方式注册的BroadcastReceiver的Context对象被销毁时,BroadcastReceiver也就自动取消注册了。

一相应的实例如下:

复制代码
import android.content.BroadcastReceiver;  
import android.content.IntentFilter;  
IntentFilter ScreenFilter new IntentFilter();  
ScreenFilter.addAction(Intent.ACTION_SCREEN_ON);  
registerReceiver(mScreenFilterReceiver, ScreenFilter);  
private BroadcastReceiver mScreenFilterReceiver = new BroadcastReceiver() {  
    public void onReceive(Context context, Intent intent) {  
            if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {  
                freshDetect();   //做要求的处理  
            }   
    }  
};  
复制代码

这种方法重启service,也可以说是万无一失的。

以上就是重启service的四种方式,大家是否有收获,请给予反馈.

 

posted on   laozhu1124  阅读(3998)  评论(6编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

淘宝免费计数器
点击右上角即可分享
微信分享提示