如何使用 WorkManager 定期更换墙纸?
How do I change wallpaper periodically using WorkManager?
我正在尝试定期更换 Android 的墙纸。
我使用 WorkManager 运行 一个工作人员,它在后台下载壁纸并进行设置。
只要应用是 运行ning,壁纸就会更换。当我关闭壁纸时,它停止了。我在 Workmanager 中使用 PeriodcWork。
这是我的代码
public class OneTimeWorker extends Worker {
Context context = getApplicationContext();
private String URL;
@NonNull
@Override
public Result doWork() {
new FetchWallpaper().execute();
return Result.SUCCESS;
}
private class FetchWallpaper extends AsyncTask<Void, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(Void... voids) {
String imageUrl="";
Bitmap result = null;
try
{
URL = "myurl.com";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(URL)
.build();
Response responses = null;
try {
responses = client
.newCall(request)
.execute();
String jsonData = responses.body().string();
JSONArray jsonArr = new JSONArray(jsonData);
JSONObject c = jsonArr.getJSONObject(new Random().nextInt(jsonArr.length()));
imageUrl = c.getString("wallpaper");
result = Picasso.with(getApplicationContext())
.load(imageUrl)
.get();
} catch (Exception e) {
e.printStackTrace();
}
}
catch (Exception e)
{
}
return result;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(bitmap);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
你最好使用Android-Job by Evernote。
内部使用 WorkManager,提供流畅、漂亮的链式方法和可靠性,同时易于实现。
在JobManager/WorkManager/GCM/AlarmManager之间自动选择以确保您的代码必须执行。
我自己也在用,还不错
我正在尝试定期更换 Android 的墙纸。
我使用 WorkManager 运行 一个工作人员,它在后台下载壁纸并进行设置。
只要应用是 运行ning,壁纸就会更换。当我关闭壁纸时,它停止了。我在 Workmanager 中使用 PeriodcWork。
这是我的代码
public class OneTimeWorker extends Worker {
Context context = getApplicationContext();
private String URL;
@NonNull
@Override
public Result doWork() {
new FetchWallpaper().execute();
return Result.SUCCESS;
}
private class FetchWallpaper extends AsyncTask<Void, Void, Bitmap>
{
@Override
protected Bitmap doInBackground(Void... voids) {
String imageUrl="";
Bitmap result = null;
try
{
URL = "myurl.com";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(URL)
.build();
Response responses = null;
try {
responses = client
.newCall(request)
.execute();
String jsonData = responses.body().string();
JSONArray jsonArr = new JSONArray(jsonData);
JSONObject c = jsonArr.getJSONObject(new Random().nextInt(jsonArr.length()));
imageUrl = c.getString("wallpaper");
result = Picasso.with(getApplicationContext())
.load(imageUrl)
.get();
} catch (Exception e) {
e.printStackTrace();
}
}
catch (Exception e)
{
}
return result;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(bitmap);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
你最好使用Android-Job by Evernote。
内部使用 WorkManager,提供流畅、漂亮的链式方法和可靠性,同时易于实现。
在JobManager/WorkManager/GCM/AlarmManager之间自动选择以确保您的代码必须执行。
我自己也在用,还不错