android服务保活jobserver,Android--使用JobService实现进程保活

@SuppressLint("NewApi")public class JobHandleService extendsJobService {private int kJobId = 0;

@Overridepublic voidonCreate() {super.onCreate();

Log.i("INFO", "jobService create");

}

@Overridepublic int onStartCommand(Intent intent, int flags, intstartId) {

Log.i("INFO", "jobService start");//在服务启动时,直接将任务推到JobScheduler 的任务队列,然后在设定的时间条件到达时,便会直接吊起我们的服务,走onStartJob()方法

scheduleJob(getJobInfo());returnSTART_NOT_STICKY;

}

@Overridepublic voidonDestroy() {super.onDestroy();

}

@Overridepublic booleanonStartJob(JobParameters params) {//params.getExtras()//scheduleJob(getJobInfo());

boolean isLocalServiceWork = isServiceWork(this, "com.xxx.XxxService");boolean isRemoteServiceWork = isServiceWork(this, "com.xxx.XxxService");if (!isLocalServiceWork || !isRemoteServiceWork) {this.startService(new Intent(this, LocalService.class));this.startService(new Intent(this, RemoteService.class));

Toast.makeText(this, "process start", Toast.LENGTH_SHORT).show();

}return true;

}

@Overridepublic booleanonStopJob(JobParameters params) {

Log.i("INFO", "job stop");//当执行完毕时,我们再将任务加入到 JobScheduler 里面就可以了。

scheduleJob(getJobInfo());return true;

}/*** Send job to the JobScheduler.*/

public voidscheduleJob(JobInfo t) {

Log.i("INFO", "Scheduling job");

JobScheduler tm=(JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);if (tm != null) {

tm.schedule(t);

}

}publicJobInfo getJobInfo() {

JobInfo.Builder builder= new JobInfo.Builder(kJobId++, new ComponentName(this, JobHandleService.class));

builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

builder.setPersisted(true);

builder.setRequiresCharging(false);

builder.setRequiresDeviceIdle(false);

builder.setPeriodic(10);//间隔时间--周期

returnbuilder.build();

}/*** 判断某个服务是否正在运行的方法

*

*@parammContext

*@paramserviceName 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService)

*@returntrue代表正在运行,false代表服务没有正在运行*/

public booleanisServiceWork(Context mContext, String serviceName) {boolean isWork = false;

ActivityManager myAM=(ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);

List myList = null;if (myAM != null) {

myList= myAM.getRunningServices(100);

}if (myList != null && myList.size() <= 0) {return false;

}if (myList != null) {for (int i = 0; i < myList.size(); i++) {

String mName=myList.get(i).service.getClassName();if(mName.equals(serviceName)) {

isWork= true;break;

}

}

}returnisWork;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值