Android 不死的应用程序service

Posted Coding_the_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 不死的应用程序service相关的知识,希望对你有一定的参考价值。

原理性的东西就不多空谈了,自己根据下面我给的提示一步一步看代码,然后就能实现了、


方案1:集成第三方信鸽 (一般的杀不死,360 能杀死)

方案2: 自己有这方面的一个开发需求,所以这里就贴一下类

/**统计步数后台service
 * Created by $杜建峰 on 2016/7/7.
 */
public class ExerciseService extends Service 

    Timer timer=new Timer();
    @Nullable
    @Override
    public IBinder onBind(Intent intent) 
        return null;
    

    @Override
    public void onCreate() 
        super.onCreate();
        timer.schedule(new TestTask(),5000,5000);
        Toast.makeText(this,"服务启动",Toast.LENGTH_SHORT).show();
    

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
        //兼容版本
        return START_STICKY_COMPATIBILITY;
    

    @Override
    public void onStart(Intent intent, int startId) 
        // 再次动态注册广播
        IntentFilter localIntentFilter = new IntentFilter("android.intent.action.USER_PRESENT");
        localIntentFilter.setPriority(Integer.MAX_VALUE);// 整形最大值
        ServiceReceiver searchReceiver = new ServiceReceiver();
        registerReceiver(searchReceiver, localIntentFilter);
        super.onStart(intent, startId);
    

    @Override
    public void onDestroy() 
        super.onDestroy();
        Intent localIntent = new Intent();
        localIntent.setClass(this, ExerciseService.class);
        this.startService(localIntent);
    

    class  TestTask extends TimerTask

        @Override
        public void run() 
            handler.sendEmptyMessage(1);
        
    

    Handler handler=new Handler()
        @Override
        public void handleMessage(Message msg) 
            super.handleMessage(msg);
            if(msg.what==1)
                Toast.makeText(ExerciseService.this,"服务运行",Toast.LENGTH_SHORT).show();
            
        
    ;

    public class ServiceReceiver extends BroadcastReceiver

        @Override
        public void onReceive(Context context, Intent intent) 
            context.startService(new Intent(context, ExerciseService.class));
        
    



AndroidMainifest.xml 配置文件
1:所需要的两个权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2:
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:name=".app.ElderlyApplication"
    android:supportsRtl="true"
    android:persistent="true"//让应用程序成为系统核心级别
    android:theme="@style/AppTheme">
3:配置一个广播这个广播是我们杀不死里面的一个广播
<receiver android:name=".app.coreservice.ExerciseService$ServiceReceiver">
    <intent-filter android:priority="2147483647" ><!--优先级加最高-->
        <!-- 系统启动完成后会调用 -->
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <!-- 解锁完成后会调用 -->
        <action android:name="android.intent.action.USER_PRESENT" />
        <!-- 监听情景切换 -->
        <action android:name="android.media.RINGER_MODE_CHANGED" />
    </intent-filter>
</receiver>
最后一步:就是装个360安全卫士看看效果 ,service 启动的时候有点慢 需要等等,也许 两分钟,但是最终会起来、

以上是关于Android 不死的应用程序service的主要内容,如果未能解决你的问题,请参考以下文章

java程序员笑不死的经历

杀不死的Perl

34 年了,“杀”不死的 Perl!

Perl:在不死的情况下捕获错误

Python踩坑之旅其一杀不死的Shell子进程

不死的LYM NOIP模拟 二分+状压DP