【问题标题】:Aws Sdk 2.12.3 TransferService UsageAws SDK 2.12.3 TransferService 使用
【发布时间】:2019-08-05 00:18:17
【问题描述】:

我们使用 2.4.2 版的 Amazon SDK 进行文件上传和下载。最近我们将其更新为 2.12.3。

在旧版本中,任何上传或下载任务都用于在后台内部启动 TransferService,用于处理网络连接监控等。

但是为了支持Android 8对限制后台服务的优化,在最新版本中,SDK内部已经停止调用TransferService,鼓励开发者显式调用。调用服务的一个推荐位置是Application 类的 onCreateTransferService 已简化为仅作为另一个类 TransferNetworkLossHandler 的初始化程序,该类扩展了 BroadcastReceiver,后者在连接更改的情况下处理暂停/恢复下载。 在较旧和较新的 SDK 中启动 TransferService 的一个主要区别在于,较早时它是使用 startService 方法启动的。但现在亚马逊文档建议在 8.0 及更高版本的设备上使用 Notification 对象以“startForegroundService”开头。

我们的应用每晚都会在后台上传调试日志,无论当时是否正在使用该应用。 SDK 更新后,我们必须在 TransferService 在 Oreo 设备上运行时设置通知。我们想使用 Aws SDK 上传日志,但不想显示通知,因为我们认为这会给我们的用户带来不好的体验。当用户启动应用程序时,仅调用 startService 而没有通知对象将起作用。但是当应用程序没有运行或不在内存中时,我们的上传日志任务会被触发,它调用 Application 类的 onCreate 进而调用 startService 导致崩溃为 应用在后台时无法调用 startService

为了避免这种情况,我们尝试绕过 TransferService 的使用并在 Application 类中自行初始化 TransferNetworkLossHandler。当应用程序正在使用或在内存中时,这似乎有效。但是如果我们刷出应用程序,在后台调用时日志上传不起作用。日志也没有帮助。没有错误日志,我们获得了正确的观察者 ID,但文件没有上传到存储桶。

我们正在使用以下代码绕过TransferService,并在Application 类的 onCreate 中初始化TransferNetworkLossHandler

TransferNetworkLossHandler.getInstance(getApplicationContext());

并在初始化后启动虚拟网络检查,我们使用

TransferNetworkLossHandler.getInstance(getApplicationContext()).onReceive(context, new Intent().setAction(ConnectivityManager.CONNECTIVITY_ACTION)); 

因此,SDK 可以根据网络连接暂停或恢复下载。

在 8.0 及以上的设备上,有什么方法可以在不使用通知的情况下使用 Amazon SDK 上传/下载?

此外,非常感谢与此类用例的最佳实践相关的任何链接。

【问题讨论】:

    标签: android amazon-web-services amazon-s3 aws-sdk android-8.0-oreo


    【解决方案1】:
    registerReceiver(TransferNetworkLossHandler.getInstance(getApplicationContext()), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    

    我将此代码放在我的应用程序类或我需要监听网络更新的活动中。

    我遇到了一个问题,当我离线时,我的上传会挂在 WAITING_FOR_NETWORK 状态并且永远不会恢复。现在它工作正常。

    来源: https://github.com/aws-amplify/aws-sdk-android/issues/899

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2019-11-21
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多