gpt4 book ai didi

android - 方法必须从主线程调用,当前推断线程是worker

转载 作者:行者123 更新时间:2023-12-05 00:21:15 24 4
gpt4 key购买 nike

我正在尝试每 15 分钟或类似的更改 Android 的壁纸。用户可以选择时间,我正在使用 Workmanager 运行定期工作。

PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(SomeWorker.class, 15, TimeUnit.MINUTES).build();
WorkManager.getInstance().enqueue(periodicWorkRequest);

这样我就调用我的 worker 类(Class)。 worker 类(Class)是这个
public class SomeWorker 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, Void>
{
@Override
protected Void doInBackground(Void... voids) {
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()));

String imageUrl = c.getString("wallpaper");

Bitmap result= Picasso.with(getApplicationContext())
.load(imageUrl)
.get();

WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(result);
} catch (Exception ex) {
ex.printStackTrace();
}

} catch (Exception e) {
e.printStackTrace();
}
Date currentTime = Calendar.getInstance().getTime();
}
catch (Exception e)
{
Date currentTime = Calendar.getInstance().getTime();
}
return null;
}
}}

在那个特定的线上,
        new FetchWallpaper().execute();

我收到错误消息说它必须从主线程调用。我是Android新手,我不知道这是否是好方法。
请让我知道是否有更好的方法来执行此类任务。

最佳答案

Worker类(class)已经调用了doWork在后台线程上 - 你不需要使用 AsyncTask一点也不。

只需将您的 doInBackground 中的所有内容移走即可方法直接进入Worker的doWork .

关于android - 方法必须从主线程调用,当前推断线程是worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51806176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com