从另一个线程在主线程中运行代码
在一个 android 服务中,我创建了线程来执行一些后台任务。
我有一个线程需要在主线程的消息队列上发布某些任务的情况,例如Runnable
.
有没有办法从我的另一个线程获取Handler
主线程并发布Message
/到它?Runnable
-
注意:这个答案引起了如此多的关注,我需要更新它。自从发布了原始答案以来,@dzeikei 的评论几乎与原始答案一样受到关注。所以这里有两种可能的解决方案:
1.如果你的后台线程有一个
Context
对象的引用:确保您的后台工作线程可以访问 Context 对象(可以是应用程序上下文或服务上下文)。然后只需在后台工作线程中执行此操作:
// Get a handler that can be used to post to the main thread Handler mainHandler = new Handler(context.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() {....} // This is your code }; mainHandler.post(myRunnable);
2.如果你的后台线程没有(或不需要)一个
Context
对象(由@dzeikei 建议):
// Get a handler that can be used to post to the main thread Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = new Runnable() { @Override public void run() {....} // This is your code }; mainHandler.post(myRunnable);
-
Java从另一个线程在主线程中运行代码
2021-02-02 关注 0 浏览51 1答案
-
检查主线程是否仍在另一个线程中
2021-01-29 关注 0 浏览65 1答案
-
即使在另一个线程上调用subscribeOn(),也可以在主线程上运行
2021-01-30 关注 0 浏览53 1答案
-
Android:将可运行对象从另一个线程发布到主线程上实际上有什么作用?
2021-01-30 关注 0 浏览54 1答案
-
如何从另一个类中运行的另一个线程更新UI
2021-02-02 关注 0 浏览111 1答案
-
从另一个线程(可运行)调用@Transactional方法
2021-01-29 关注 0 浏览135 1答案
-
从辅助线程在主线程上运行代码?
2021-01-30 关注 0 浏览94 1答案
-
如何从另一个线程暂停和恢复Java中的线程
2021-01-31 关注 0 浏览94 1答案
-
从另一个运行FTP下载的线程更新PyQt进度
2021-01-29 关注 0 浏览64 1答案
-
从另一个线程更新JLabel
2021-01-29 关注 0 浏览94 1答案