我正在创建应用程序,其中有一个复选框选项,允许用户在30秒后自动更改壁纸。我正在使用JobScheduler,并通过将它们序列化为JsonArray然后传递给String并使用PersistanceBundle传递它来传递图像的arraylist:
JsonArray result = (JsonArray) new Gson().toJsonTree(wallpaperModelArrayList,
new TypeToken<List<WallpaperModel>>() {
}.getType());
PersistableBundle persistableBundle=new PersistableBundle();
persistableBundle.putString("wallpaper",result.toString());
mJobScheduler = (JobScheduler)
getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(),
JobSchedulerService.class.getName()));
builder.setExtras(persistableBundle);
builder.setPeriodic(30000);
我的JobService课程:
public class JobSchedulerService extends JobService {
private static final String TAG = "JobSchedulerService";
private String images;
@Override
public boolean onStartJob(JobParameters params) {
Log.i(TAG, "onStartJob:");
images = params.getExtras().getString("wallpaper");
changeWallpaper(params);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
//Log.i(TAG, "onStopJob:");
return true;
}
private void changeWallpaper(JobParameters params) {
Gson gson = new Gson();
Type listType = new TypeToken<List<WallpaperModel>>(){}.getType();
List<WallpaperModel> list = gson.fromJson(images, listType);
Glide.with(this)
.load(list.get(0).getUrlImage())
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super
Bitmap> glideAnimation) {
try {
WallpaperManager.getInstance(getApplicationContext()).setBitmap(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
});
jobFinished(params, false);
}
}
我不知道如何在JobService列表中每隔30秒后设置一个壁纸(图片一张一张)?有人能告诉我setperiodic函数是如何工作的(30秒后会发生什么)?这种方法可能是错误的。任何人都可以指导我如何做到这一点?提前谢谢。