【问题标题】:When app is onAppBackgrounded I need to upload data to server android当应用程序处于 onAppBackgrounded 时,我需要将数据上传到服务器 android
【发布时间】:2021-10-08 18:16:34
【问题描述】:

我需要在不同的线程(不是主线程)中将数据上传到服务器。我已经尝试过 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);
    }

【问题讨论】:

    标签: android service alarmmanager android-workmanager jobintentservice


    【解决方案1】:

    当您排队时,工作就可以开始了。这并不意味着:“现在开始”。要开始工作,必须满足所有约束条件。这取决于很多东西,其中一些约束不取决于您的输入,还取决于电池优化等。

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

    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

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多