用于UI和逻辑的单独线程 - Android

时间:2012-01-25 13:43:54

标签: android multithreading user-interface vector

我想创建单独的线程来实现核心逻辑和更新GUI。 两个线程不应直接与它们共享数据。为此,我想创建一个带有同步get()和put()方法的向量队列。 假设如果在GUI线程中发生onClick事件,它会通知核心线程它收到了OnClick事件。所以核心线程实现了一些东西并将结果放在向量中。此时,GUI线程被通知接收到的结果,并且它获取它并更新屏幕。 我无法弄清楚如何做到这一点。有没有办法可以实施?

1 个答案:

答案 0 :(得分:0)

您可以像在任何其他框架或环境中那样执行此操作。 Android api为您提供了许多处理多线程应用程序的高级方法,如您所描述的(AsyncTask,Handler / Thread / Runnable等),但您也可以将它们包装在您自己的处理队列中。我最近在那里创建了一个用于处理的逻辑队列,当我向队列推送一些东西时,我运行一个方法来检查我的队列中的项目并在后台线程上处理它们。您可以在处理完成时通过发送广播意图并在活动级别注册IntentFilters来通知系统(不要忘记取消注册),或者您可以像Android UI框架对Views上的UI事件一样实现您自己的侦听器接口< / p>

虽然它的核心是,但是你将它包装起来,AsyncTask使得在后台线程和主UI线程之间来回调用变得非常容易。 onPreExecute,onProgressUpdated和onPostExecute都在UI线程上运行,doInBackground在自动为您创建的后台线程中运行。没有比那更容易