在 Android Worker doWork() 中,当遇到 for 循环时,可能会引起线程堵塞和 ANR(应用无响应)问题。为了避免这种情况,可以使用 while 循环,同时添加一个判断条件,在需要时可以退出循环。以下是一个例子:
public class MyWorker extends Worker {
private static final String TAG = "MyWorker";
public MyWorker(Context context, WorkerParameters params) {
super(context, params);
}
@NonNull
@Override
public Result doWork() {
int count = 0;
while (!isStopped() && count < 1000) {
Log.d(TAG, "doWork: " + count);
count++;
}
return Result.success();
}
}
在上面的例子中,我们使用了 while 循环,只要线程没有被停止且循环次数小于 1000 次,就会一直执行循环。这种方式可以避免 for 循环带来的线程堵塞和 ANR 问题。