我在使用 ListenableFuture 时遇到了问题,这是整个代码
主活动.java:
package com.example.app16;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.work.Configuration;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
public class MainActivity extends AppCompatActivity {
WorkManager w;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WorkManager.initialize(this, new Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.INFO)
.build());
w = WorkManager.getInstance(getApplicationContext());
OneTimeWorkRequest j = new OneTimeWorkRequest.Builder(lWorker.class).build();
w.enqueue(j);
}
public void click(View view) {
w.cancelAllWork();
}
}
Run Code Online (Sandbox Code Playgroud)
lWorker.java:
package com.example.app16;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.concurrent.futures.CallbackToFutureAdapter;
import androidx.work.ListenableWorker;
import androidx.work.WorkerParameters;
import com.google.common.util.concurrent.ListenableFuture;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response; …Run Code Online (Sandbox Code Playgroud) multithreading android garbage-collection worker android-studio
我阅读了这些说明:https : //developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration#on-demand 现在我有一个 MyApplication 类,但我不明白如何使用它和我在任何地方都找不到明确的说明
请求WorkManager.getInstance时,自然会产生错误,因为MyApplication类在任何地方都没有使用。我无法理解如何为 WorkManager 激活此类。
AndroidManifest.xml:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove"
android:exported="false" />
Run Code Online (Sandbox Code Playgroud)
MyApplication.java:
public class MyApplication extends Application implements Configuration.Provider {
@NonNull
@Override
public Configuration getWorkManagerConfiguration() {
return new Configuration.Builder().
setExecutor(Executors.newFixedThreadPool(5)).build();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要准确地解决这个问题,所以我会很感激你的好帮助。如何使按需初始化工作?