考虑一个简单的Android应用程序:有两个TabActivities,后台有一个线程从服务器获取整数值。如果数字是偶数,则必须在第一个标签中显示,否则在第二个标签中显示。显然我会做一些更复杂的事情,但这是基本模式。我该怎么做呢?我现在已经摸不着头脑了一天,这是我遇到过的事情:
使用EventHandlers。两个TabActivities寄存器用于监听my_events,当线程收到一个值时,它会“抛出my_event”,然后调用这两个激活中的特定方法并传递值。
使用处理程序。
之前我没有使用过这两个概念,我想知道哪条路线可能更好/更正。此外,将欣赏沿所选路线的任何更多提示。此外,该线程是否应该从服务类运行?
答案 0 :(得分:0)
创建线程时,只需将选项卡中的对象传递给它,然后在执行中,您可以轻松地将所需文本放入选项卡中。
答案 1 :(得分:0)
可能你想看看使用AysncTask。如果执行此操作,则需要将值插入onProgressUpdate()方法的相应选项卡中。由于传递给此方法的参数实际上可能无法充分表示传入数据,因此您只想将新数据放在可以从onProgressUpdate()方法访问的某个位置,可能在成员变量中。请记住,可能需要同步对此成员变量的访问,因为onProgressUpdate中的代码正在应用程序的主线程上运行,而doInBackground中的代码正在后台线程上运行,因此这些方法中的代码将同时运行。
AsyncTask透明地为您使用Handler,但如果您愿意,可以使用原始处理程序。您需要记住的基本事项是
可能由服务调用线程,但是如果线程只有在存在用于更新的UI时才需要存在,则可能没有什么意义。