JobService的使用
沒有總結,只有代碼,不解釋
api 21以上纔可以使用
import android.annotation.SuppressLint;
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.Build;
import android.os.PersistableBundle;
import android.support.annotation.RequiresApi;
import com.lcy.lopdatacloud.mylibrary.Constant;
import com.lcy.lopdatacloud.mylibrary.MyJobService;
public class JobServiceUtils {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private static void scheduleJob(Context context, Class tClass, String productIds, String channelCode) {
@SuppressLint("JobSchedulerService")
ComponentName serviceComponent = new ComponentName(context, tClass);
JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent);
builder.setPeriodic(Constant.TIME_INTERVAL);
builder.setPersisted(false);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setRequiresCharging(false);
builder.setRequiresDeviceIdle(false);
PersistableBundle bundle = new PersistableBundle();
bundle.putString("productIds", productIds);
bundle.putString("channelCode", channelCode);
builder.setExtras(bundle);
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public synchronized static void startAlarmManager(Context context, Class tClass, String productIds, String channelCode, boolean isServer) {
Intent intent = new Intent(context, MyJobService.class);
scheduleJob(context.getApplicationContext(), tClass, productIds, channelCode, isServer);
context.startService(intent);
}
}
import android.app.job.JobParameters;
import android.app.job.JobService;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.RequiresApi;
import com.lcy.lopdatacloud.LopDataCloud;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class MyJobService extends JobService {
public MyJobService(){
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_NOT_STICKY;
}
@Override
public boolean onStartJob(JobParameters params) {
String productIds = params.getExtras().getString("productIds");
String channelCode = params.getExtras().getString("channelCode");
LopDataCloud.getInstance().initLopDataCloud(this, productIds, channelCode);
jobFinished(params, false);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
調用
JobServiceUtils.startAlarmManager(context, MyJobService.class, productIds, channelCode);