为什么本地WLClient生命周期绑定到活动的生命周期(Why native WLClient li

2019-10-21 01:47发布

简洁版本

我发现,WLClient生命周期势必活动。 活动的生命周期是由操作系统管理。

你有什么建议来弥补呢?

长的版本

对于Android原生的项目,第一步应通过以下调用来创建一个WLClient实例

WLClient.getInstance(Context ctx)

从API文档,这是一个背景,而不是一个活动,但在现实中,就投在WLPush.java在WL框架类型。

它没有意义的WLClient绑定到一个活动,它的生命周期不是由我们控制。 因此,对于安全的关注,每个WLClient应重新创建,创建一个新的活动时。

而对于每一个再创作,下面的需要:

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

我有以下错误,如果我通过继承应用程序(这是一个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)

Answer 1:

当前的实现并不理想。 如果你愿意,你可以提交功能请求有这个重新评估未来的版本。 :您可以通过提交http://www.ibm.com/developerworks/rfe/

它之所以是这样,是因为WLClient有一些功能,例如显示UI的错误消息,监视所述应用程序是否是在前景/背景对心跳以及推送通知的支持,需要一个Android上下文。

在这种情况下,你所得到的错误预期。



文章来源: Why native WLClient lifecycle bind to Activity lifecycle