如何在强制终止应用后确保Android-Workmanager重新启动

时间:2020-05-26 21:58:03

标签: android android-workmanager

我读过的sources表明,强制杀死后Android Workmanager的预期行为是在重新启动应用程序后的“一段时间”内重新启动。但是,我的应用程序上的Workmanager仅在整个设备重新启动后才会重新启动。如果我只是重新启动应用程序,则Workmanager保持空闲状态。我使用的是Android 10 Lineage OS,但我也在其他设备上重现了此行为。这是我的MainActivity中的代码:

private ActivityMainBinding oBinding;
private static final String TAG = "PeriodicWorkTag";
/**
 * The minimum interval duration for {@link PeriodicWorkRequest} (in milliseconds).
 */
public static final long MIN_PERIODIC_INTERVAL_MILLIS = 15 * 60 * 1000L; // 15 minutes.
/**
 * The minimum flex duration for {@link PeriodicWorkRequest} (in milliseconds).
 */
public static final long MIN_PERIODIC_FLEX_MILLIS = 5 * 60 * 1000L; // 5 minutes.

@Override
protected void onCreate(Bundle savedInstanceState) {

    LayoutInflaterCompat.setFactory2(getLayoutInflater(), new IconicsLayoutInflater2(getDelegate()));
    super.onCreate(savedInstanceState);

    //init job
    androidx.work.PeriodicWorkRequest periodicWorkRequest = new androidx.work.PeriodicWorkRequest.Builder(
            MonthlyWorker.class,
            MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS,
            MIN_PERIODIC_FLEX_MILLIS, TimeUnit.MILLISECONDS)
            .addTag(TAG)
            .build();
    WorkManager.getInstance(getApplicationContext()).enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.KEEP, periodicWorkRequest);

    //init Databinding
    oBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

    setSupportActionBar(oBinding.toolbar);

    if(oBinding.mainContainer != null){

        //are we restoring the instance state?
        if(savedInstanceState != null){
            return; //yes - do nothing
        }

        this.CreateNewFragment(new Fragment_Main());
    }
}

测试表明,重新启动强制终止的应用程序后,通过了OnCreate()方法,Workmanager启动行也是如此。因此,用onResume()方法启动Workmanager似乎是多余的。

如何确保在强行杀死我的工作后会重新开始?感谢您的阅读。

0 个答案:

没有答案
相关问题