2014-09-23 62 views
0

我是Android和Java的新手。我需要对线索及其与活动的关系进行澄清。我在考虑这种情况:在后台运行的代码可以在两个活动中看到。我不知道这是否可以使用线程来实现。从我读过的内容来看,使用服务不会有任何问题,但是我不确定在线程的情况下,所以在这里我的问题是:如果线程在后台运行,它是否可以“可见”两个或更多的活动?例如,有关线程的最基本示例会更改某些活动中的文本或更新进度栏的值,但是,是否可以使用同一个线程在第二个活动中执行相同的操作?或者我需要为第二个活动创建一个新的线程来做同样的事情?对于这种情况,服务是否更好?Android,活动和主题

谢谢。

+1

就是你能看见意思?请彻底解释。线程无法更新任何UI组件,只有UI线程才可以。 – 0101100101 2014-09-23 08:37:52

+0

我是新来的Java,所以可能不是正确的术语。可见的意思是可以从一个或多个活动中访问线程。 – Madbyte 2014-09-23 09:17:21

回答

0

如果一个线程在后台运行,它可以是“可见”的两个或 更多的活动?

如果我理解“可见”,因为它可以访问这些Activity实例,那么是的,为什么不呢?这只是另一个对象。

例如,关于线程最基本的样本变化 文本的一些活动或更新进度条的值,但是,可以在这个 相同的线程可以用来做第二个活动一样吗?

当然。请记住,唯一可以绘制UI的线程是UI线程(也称为主线程或系统线程)。要从您创建的任何其他线程执行任何UI更新,您需要致电runOnUiThread()

对于这种情况,服务更好吗?

如果此线程仅用于更新您的应用程序UI,那么后台线程是最佳解决方案。服务在您的应用程序关闭后将继续运行,并且您还需要执行IPC来交流应用程序和服务,这比较慢并且需要更多代码。

您也可以考虑使用AsyncTask相反,它是更适合您的情况,因为它的一些方法,直接在UI线程上运行(这样你就不会需要runOnUiThread

+0

谢谢。是的,根据你的理解,我确实使用了“可见”这个术语。 – Madbyte 2014-09-23 09:27:54