gpt4 book ai didi

android - 为什么原生 WLClient 生命周期绑定(bind)到 Activity 生命周期

转载 作者:行者123 更新时间:2023-11-30 02:38:57 24 4
gpt4 key购买 nike

精简版

我发现 WLClient 生命周期绑定(bind)到 Activity。 Activity 生命周期由操作系统管理。

您有什么建议可以弥补这一点吗?

长版

对于 Android Native 项目,第一步应该是通过以下调用创建一个 WLClient 实例

WLClient.getInstance(Context ctx)

从API文档看是Context,不是Activity,但实际上在WL框架的WLPush.java中会有类型转换。

将 WLClient 绑定(bind)到 Activity 是没有意义的,Activity 的生命周期不受我们控制。因此出于安全考虑,当创建新的 Activity 时,应重新创建每个 WLClient。

对于每次重新创建,需要以下内容:

  1. 连接到服务器
  2. 构造挑战处理器

如果我传递一个继承 Application(它是一个 Context)的类(MainContext),我会出现以下错误:

09-26 13:33:29.571: E/AndroidRuntime(32300): FATAL EXCEPTION: pool-2-thread-4
09-26 13:33:29.571: E/AndroidRuntime(32300): Process: com.XXXX, PID: 32300
09-26 13:33:29.571: E/AndroidRuntime(32300): java.lang.ClassCastException: com.XXX.MainContext cannot be cast to android.app.Activity
09-26 13:33:29.571: E/AndroidRuntime(32300): at com.worklight.wlclient.api.WLPush.<init>(WLPush.java:151)
09-26 13:33:29.571: E/AndroidRuntime(32300): at com.worklight.wlclient.api.WLClient.getPush(WLClient.java:673)
09-26 13:33:29.571: E/AndroidRuntime(32300): at com.worklight.wlclient.WLRequest.requestFinished(WLRequest.java:203)
09-26 13:33:29.571: E/AndroidRuntime(32300): at com.worklight.wlclient.InternalRequestSender.run(AsynchronousRequestSender.java:138)
09-26 13:33:29.571: E/AndroidRuntime(32300): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-26 13:33:29.571: E/AndroidRuntime(32300): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-26 13:33:29.571: E/AndroidRuntime(32300): at java.lang.Thread.run(Thread.java:841)

最佳答案

当前的实现并不理想。如果您愿意,可以提交功能请求,以便在未来的版本中对其进行重新评估。您可以通过以下方式提交:http://www.ibm.com/developerworks/rfe/

之所以这样,是因为WLClient有一些特性,比如显示UI错误信息,监控应用程序是否在前台/后台心跳以及推送通知支持,需要 Android 上下文。

在这种情况下,您收到的错误是正常的。

关于android - 为什么原生 WLClient 生命周期绑定(bind)到 Activity 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com