当应用程序处于 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的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台或终止状态时,如何找到用户位置?

当应用程序处于 onStop() 状态时如何启动对话框?

当应用程序处于关闭状态时,不会出现 Sinch VoIP 推送通知

当应用程序处于后台状态时,FCM 多个推送通知无法正常工作

当应用程序处于后台时,从推送通知中插入 coredata 记录

ios:当应用程序处于焦点时禁用警报通知(OneSignal)