在多线程环境中将执行传递给主线程
在多线程编程中,特别是在 Android 服务中,可能会出现后台线程需要执行的情况与主线程交互。一个常见的需求是将任务(例如 Runnables)发布到主线程的消息队列上。
带有上下文引用的解决方案
如果后台线程可以访问 Context对象,可以利用应用程序或服务上下文来获取主对象的处理程序thread:
Handler mainHandler = new Handler(context.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
没有上下文引用的解决方案
如果后台线程没有上下文引用,可以使用@dzeikei建议的替代方法:
Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() { // Code to execute on the main thread } }; mainHandler.post(myRunnable);
以上是如何在 Android 中将执行传递给主线程:有上下文还是没有上下文?的详细内容。更多信息请关注PHP中文网其他相关文章!