当应用程序处于 onAppBackgrounded 时,我需要将数据上传到服务器 android
Posted
技术标签:
【中文标题】当应用程序处于 onAppBackgrounded 时,我需要将数据上传到服务器 android【英文标题】:When app is onAppBackgrounded I need to upload data to server 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);
【问题讨论】:
【参考方案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
【讨论】:
以上是关于当应用程序处于 onAppBackgrounded 时,我需要将数据上传到服务器 android的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序处于关闭状态时,不会出现 Sinch VoIP 推送通知