在Android中,如何将事件从应用程序传递到活动?

在Android中,如何将事件从应用程序传递到活动?,android,listener,handler,Android,Listener,Handler,我在这方面的知识有一点差距,我想确保在编写所有错误的代码之前,我都做对了 我有一个Android应用程序,它扩展了应用程序,为TCP客户端设置了一些核心功能。有几个不同的活动屏幕应该与应用程序交互。我一直想知道的是,当应用程序收到数据包时该怎么做。我想将其转发到当前可见的活动,不管它是什么 来自C#背景,我只需在应用程序中创建一个事件,并在创建活动时订阅该事件。但我对Java侦听器、处理程序等感到困惑 最好的办法是什么?我应该改做服务吗?(但我真的不在乎应用程序未显示时TCP连接是否被终止。)我

我在这方面的知识有一点差距,我想确保在编写所有错误的代码之前,我都做对了

我有一个Android应用程序,它扩展了应用程序,为TCP客户端设置了一些核心功能。有几个不同的活动屏幕应该与应用程序交互。我一直想知道的是,当应用程序收到数据包时该怎么做。我想将其转发到当前可见的活动,不管它是什么

来自C#背景,我只需在应用程序中创建一个事件,并在创建活动时订阅该事件。但我对Java侦听器、处理程序等感到困惑


最好的办法是什么?我应该改做服务吗?(但我真的不在乎应用程序未显示时TCP连接是否被终止。)

我会采用
LocalBroadcastManager
()方法

应用程序
类中创建一个小狗,并在
onStart
onStop
中注册/取消注册
活动
对象。请参阅
Context.registerReceiver
。请注意,这需要使用
Intent
s,这对您的应用程序来说可能限制太多/太重;打包/解包数据可能是件麻烦事


或者,您不必使用任何特定的android类来执行此操作——只需通过调用
应用程序
中的
onStart
onStop
来跟踪程序所处的
活动。如果您让所有感兴趣的活动扩展包含此逻辑的
Activity
子类,则可能有助于清理代码。

我认为您的第二个想法可能适用于此。是否将“当前”活动的句柄存储在上下文变量中,然后在有数据时调用该上下文的句柄?这些是正确的术语吗?我会更进一步,将其存储为
活动
,这样您就可以访问更多可能有用的方法,尤其是来自后台服务的方法(例如
活动.runOnUiThread
)。这样,就不需要
处理程序
。它已经可以像champ一样工作了。按照建议使用runOnUiThread。谢谢不客气。事实上,我在我的应用程序中遇到了这个问题,看到这个问题,我对自己的(复杂的)方法产生了疑问,并用它换了这个更简单的方法。