android 前置service

在android开发中,如何写一个不被干掉的service一直是一个大问题。
尤其是现在这么多一键加速的app,分分钟让你的服务被干掉。

总结一下,从2.x版本一路走来,大家也研究了很多保护service不被干掉的方法:
1. 最基本的,不要用bindService去开启一个服务,而是用startService,因为前者会将activity与service绑定到一起,当你的activity挂掉时,service也会挂掉,而大家都知道,当你的activity在后台运行时,是非常容易被系统释放掉的。
2. 其次,你可以在onStartCommand方法中,返回START_STICKY,其实这并不能保证服务不被干掉,它只是表示该服务被干掉后会自动重启。但是这并不是一个特别好的办法,因为你是无法控制重启的时间的
3. 设置android:process为独立进程。
4. 开启一个前置服务:
这个详细说一下。其实是你先开启了一个服务,然后把这个服务给设置成前置的,对应的,要声明一个Notification在推送栏里,我想这是android防止大家都偷偷摸摸的开前置服务吧:

//开启一个前置服务
                Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
                        System.currentTimeMillis());
                Intent notificationIntent = new Intent(context, MainActivity.class);
                PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
                notification.setLatestEventInfo(context, getText(R.string.action_settings),
                        getText(R.string.definition_High), pendingIntent);
                startForeground(1, notification);

需要注意一点,startForeground(1, notification); 的第一个参数如果是0,那不会在推送栏显示Notification

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值