在android服务中,我创建了一些线程来执行一些后台任务
我遇到一种情况,线程需要在主线程的消息队列上发布特定任务,例如Runnable
有没有办法获取主线程的处理程序,并将消息/可运行从我的另一个线程发送到它
注意:这个答案已经引起了很多关注,我需要更新它。自从原始答案发布后,@dzeikei的评论几乎和原始答案一样受到关注。因此,这里有两种可能的解决方案:
1。如果您的后台线程引用了上下文对象:
确保后台工作线程可以访问上下文对象(可以是应用程序上下文或服务上下文)。然后在后台工作线程中执行此操作:
//获取可用于发布到主线程的处理程序
Handler mainHandler=新处理程序(context.getMainLooper());
Runnable myRunnable=新Runnable(){
@凌驾
public void run(){..}//这是您的代码
};
mainHandler.post(myRunnable);
2。如果您的后台线程没有(或不需要)上下文对象
(由@dzeikei建议):
//获取可用于发布到主线程的处理程序
Handler mainHandler=新处理程序(Looper.getMainLooper());
Runnable myRunnable=新Runnable(){
@凌驾
public void run(){..}//这是您的代码
};
mainHandler.post(myRunnable);