【发布时间】:2014-09-26 11:55:50
【问题描述】:
短版
我发现 WLClient 生命周期绑定到 Activity。活动生命周期由操作系统管理。
您有什么建议可以弥补这一点吗?
加长版
对于 Android Native 项目,第一步应该是通过以下调用创建一个 WLClient 实例
WLClient.getInstance(Context ctx)
从 API 文档来看,它是一个 Context,而不是一个 Activity,但实际上,在 WL 框架的 WLPush.java 中会有一个类型转换。
将 WLClient 绑定到 Activity 是没有意义的,它的生命周期不受我们控制。因此出于安全考虑,每个 WLClient 都应该在创建新 Activity 时重新创建。
并且对于每次重新创建,都需要以下内容:
- 连接到服务器
- 构造挑战处理程序
如果我传递一个类(MainContext)继承Application(它是一个上下文),则会出现以下错误:
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)
【问题讨论】:
标签: android android-activity ibm-mobilefirst lifecycle android-lifecycle