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 启动的时候有点慢 需要等等,也许 两分钟,但是最终会起来、
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值