Android电量优化之JobScheduler

本文介绍了Android电量优化中的关键组件JobScheduler,通过一个简单的demo展示了如何使用JobScheduler来实现电量友好的任务调度。文章提及JobScheduler可以解决的任务包括打包操作、电量充足或充电状态、WiFi和移动数据条件以及设备休眠情况下的任务执行。同时,提到了为Service注册并赋予相应权限以及提交任务的步骤。
摘要由CSDN通过智能技术生成

本文只是粗浅的写个demo,惭愧,目前不愿深究它


JobScheduler目前就我认知解决4个问题:

1.打包操作

2.充足电量、充电情况

3.wifi、移动数据情况

4.休眠


service

package com.example.demo;

import android.app.job.JobParameters;
import android.app.job.JobService;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;

public class XJobService extends JobService {

    private static final String TAG = "xbh";

    @Override
    public boolean onStartJob(JobParameters params) {
        if (isNetworkConnected()) {
            Log.i(TAG, "我进行了网络请求");
            return true;
        }
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return false;
    }

    private boolean isNetworkConnected() {
        ConnectivityManager connectivityManager =
                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = null;
        if (connectivityManager != null) {
            networkInfo = connectivityManager.getActiveNetworkInfo();
        }
        return (networkInfo != null && networkInfo.isConnected());
    }
}


注册,并且给予权限

<service
    android:name=".XJobService"
    android:permission="android.permission.BIND_JOB_SERVICE" />


提交任务

package com.example.demo;

import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private ComponentName serviceComponentName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //开启服务
        Intent intent = new Intent(this, XJobService.class);
        startService(intent);

        serviceComponentName = new ComponentName(this, XJobService.class);

        //提交10个任务
        submitTask();
    }

    private void submitTask() {
        JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
        for (int i=0; i<10; i++) {
            JobInfo jobInfo = new JobInfo.Builder(i, serviceComponentName)
                    .setMinimumLatency(5000) //任务运行最少延迟时间
                    .setOverrideDeadline(60000) //任务运行最晚期限
                    .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)//有网的时候
                    .build();

            if (scheduler != null) {
                scheduler.schedule(jobInfo);
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值