当应用程序 onAppBackgrounded 我需要将数据上传到服务器 android

When app is onAppBackgrounded I need to upload data to server android

我需要在不同的线程(而不是在主线程)中将数据上传到服务器。我试过 WorkManager 来完成下面的工作。但是每次我为应用程序设置后台时,WorkManager 都不会被触发。如何在应用程序每次都进入后台时在不同的线程中将数据发送到服务器?

@Override
public void onCreate() {
...
mRequest = new OneTimeWorkRequest.Builder(UploaddWorker.class).setConstraints(
                new Constraints.Builder().setRequiredNetworkType(
                        NetworkType.CONNECTED).build()).build();
...
}


@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void onAppBackgrounded() {
        //App in background
        Log.e(TAG, "onAppBackgrounded");
        mWorkManager.enqueue(mRequest);
    }

当您将工作加入队列时,它可能会开始。这并不意味着:“现在开始”。要开始工作,必须满足所有约束。这取决于很多东西,有些约束不取决于您的输入,还取决于电池优化等。

如果您想现在开始,请使用服务。在这里您可以阅读更多关于后台执行以及如何选择的信息:

https://developer.android.com/guide/background https://developer.android.com/guide/components/services

如果您想了解 WorkManager 的方向,您需要阅读 StandbyBuckets。另外,尝试调试 JobScheduler 并查看为什么工作不是 运行:

https://developer.android.com/topic/performance/appstandby https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging

此外,您需要了解电池优化:

https://developer.android.com/training/monitoring-device-state/doze-standby

以及如何禁用它:

https://developer.android.com/training/monitoring-device-state/doze-standby#support_for_other_use_cases

还有这个:

https://developer.android.com/topic/performance/power/power-details