android打不死的小强——永不磨灭的Servicr
来源:互联网 发布:Linux tail查找 编辑:程序博客网 时间:2024/04/29 22:51
笔者在这里就不多说了,因为一般人们都不喜欢这样的东西,尤其是有洁癖的人更是如此,总是喜欢时不时的杀进程杀服务,可是由于android开源的特殊性,你会发现被干掉的服务又一次的重新复活了,总之生命力极其强悍,业界称之为——打不死的小强。
对于用户也许这个小强很是讨厌,可是对于开发者来说,由于需求,不得不做一个小强(是不是说俺们程序猿也是很讨厌啊。。呜呜。。)
废话不多说,小强的做法有很多种,像主流的微信、QQ等都是启动两个服务,两个服务之间相互监听,一个被干掉,另外一个会立即启动被干掉的这个,由于服务在Android的“地位”最高,所以服务中的监听会优先执行。这就是QQ、微信的做法。
在这里我用的是自己的做法,做法与他们原理相同,不过我是设置了一个定时器,如果服务被干掉,服务会在指定的时间后重启。这个时间你来定,是不是很爽啊,要是定的时间很小,哈哈,恭喜你,你制作了一个病毒,由于服务会一直启动,会使你的机子卡死。。。。。。
首先,自己做一个Service
public class MyService extends Service {/** * 定时器 */private AlarmManager mAlarmManager = null;private PendingIntent mPendingIntent = null;@Overridepublic void onCreate() {Intent intent = new Intent(getApplicationContext(), MyService.class);mPendingIntent = PendingIntent.getService(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);// 服务创建时时间long now = System.currentTimeMillis();// 定时器多久后启动long later = 60000;mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);// RTC 在指定的时刻,发送广播,但不唤醒设备// RTC_WAKEUP 在指定的时刻,发送广播,并唤醒设备mAlarmManager.setInexactRepeating(AlarmManager.RTC, now, later, mPendingIntent);super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Toast.makeText(getApplicationContext(), "Callback Successed!", Toast.LENGTH_LONG).show();return START_STICKY;}@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onDestroy() {super.onDestroy();}}
咱们再实现一个功能,让这个服务在开机的时候启动,代码如下,注册一个广播事件,监听系统的Intent.ACTION_BOOT_COMPLETED
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//开机启动if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {Intent startServiceIntent = new Intent(context, MyService.class);startServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startService(startServiceIntent);}}}接下来,在咱们的清单文件上加上这个服务和广播
<span style="white-space:pre"></span><service android:name="com.xiaoqiang.service.MyService" android:enabled="true" android:process=":remote" > </service> <receiver android:name="com.xiaoqiang.service.MyBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver>
最后,在自己的程序中启动就OK啦,好了小强制作完成
代码0分下载
0 0
- android打不死的小强——永不磨灭的Servicr
- 打不死的小强永不crash的Android
- Hello World---打不死的小强
- c++ 进程守护之打不死的小强
- 打不死的小强--双进程守护
- WebView漏洞,为何是打不死的小强?
- 打不死的小强 杀不死的服务 开机自启动服务
- 【Qzone】打不死的小强 杀不死的服务 开机自启动服务
- SCI-HUB,就是打不死的小强,最新网址又出来了
- 让Service变成杀不死的小强,浅谈如何实现不死的服务
- 打不死的redis集群
- 打不死的redis集群
- 打不死的redis集群
- 有一点点心酸,还有一点点的甜~~~我愿做一只打不死的小强
- Android 杀不死的服务
- Android 杀不死的服务
- android 杀不死的服务
- Android 不死的应用程序service
- CSS 盒子模型
- 使用 GNU Libtool 创建库
- 用Supervisord管理进程
- String转换成Date 或Datetime
- e.Item.ItemType 的用法
- android打不死的小强——永不磨灭的Servicr
- linux IPC之POSIX消息队列
- 区域生长法图像分割的实现方法
- cocos2d之网络特效CCGridAction && 场景切换特效CCTransitionCrossFade
- C#和java和android中的NetWorkAdapter,httpRequest,WebView,json,xml
- userInteractionEnabled交互性
- 多线程的基本概念及实现方式
- mysql给用户添加查询权限
- 在 Ubuntu 12.04 上通过源代码安装 Open vSwitch (OVS)