从后台线程开始活动

tar*_*cus 3 android websocket android-activity

我有一个andoid-app,当用户登录时它会连接到WebSocket服务器。如果用户空闲了一段时间或出于某种原因他的会话到期/终止,则该应用程序会通过WebSocket连接得到通知,我想将他带回登录活动(如果他未登录,则应用程序中没有任何功能)。

我研究了广播的Intent和runOnUIThread(),但似乎无法使其正常工作。我的想法是简单地注册正在运行的活动(例如,让所有活动都实现一个接口)并进行调用,但这意味着所有活动都必须实现该接口。它们大多数已经继承自BaseActivity类,但并非全部。

我意识到它的坏习惯是突然中断用户流,但是除非用户具有有效的会话,否则所有功能都无法正常工作。

我使用android-websocket(https://github.com/koush/android-websockets)库作为客户端,如果有什么不同的话。

在此先感谢托马斯

编辑:有时我也想以Toast或Dialog的形式通知用户服务器上发生了某个事件。

Ada*_*icz 5

我做了测试

  • 您可以从非ui线程启动startActivity
  • 您可以从非ui线程完成Activity

看一下ACRA项目-很好的异常处理。在第217行的ReportExecutor(https://github.com/ACRA/acra/blob/master/acra/src/main/java/org/acra/builder/ReportExecutor.java#L217)中,活动以全新的线程开始(没有runOnUiThread)。

我很惊讶为什么它起作用:)