Java从另一个线程在主线程中运行代码

在android服务中,我创建了用于执行某些后台任务的线程。

我遇到一种情况,线程需要在主线程的消息队列上发布某些任务,例如a Runnable

有没有办法让Handler主线程和后Message/ Runnable从我的其他线程呢?

回答:

注意:此答案已引起广泛关注,我需要对其进行更新。自从原始答案发布以来,@ dzeikei的评论几乎和原始答案一样受到关注。因此,这里有两种可能的解决方案:

1.如果您的后台线程引用了一个Context对象:

确保您的后台工作线程可以访问Context对象(可以是Application上下文或Service上下文)。然后只需在后台工作线程中执行此操作:

// 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从另一个线程在主线程中运行代码 的全部内容, 来源链接: utcz.com/qa/428319.html

回到顶部