如何在主UI线程的不同线程中执行处理程序

问题描述 投票:0回答:1

我在我的活动中有一个处理程序,它执行两项操作,对于GAME_ACTIVITY_UPDATE_UI消息,必须在主线程之外进行一些计算,对于GAME_ACTIVITY_REFRESH_UI必须在主线程中自行执行。我在活动之外有一个单独的线程,该线程必须针对这两种情况调用该处理程序,在一种情况下,必须尊重该处理程序在主线程之外,而在另一种情况下,必须尊重必须在主线程中执行代码。 >

问题是,当我的外部踩踏程序调用活动的处理程序时,handleMessage的代码在主线程中执行了[[always

。对于GAME_ACTIVITY_UPDATE_UI,如何维护调用处理程序sendEmptyMessage的线程,而不是在主ui线程中执行代码?我的活动处理程序:

Handler gameHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case GAME_ACTIVITY_UPDATE_UI: updateUI(); break; case GAME_ACTIVITY_REFRESH_UI: refreshUI(); break; } } };

我的调用处理程序的外部线程

public void run() { while(true){ //a lot more stuff gameHandler.sendEmptyMessage(GameActivity.GAME_ACTIVITY_UPDATE_UI); gameHandler.sendEmptyMessage(GameActivity.GAME_ACTIVITY_REFRESH_UI); //a lot more stuff } }

请记住:

GAME_ACTIVITY_UPDATE_UI

:必须在单独的线程中执行(不起作用)GAME_ACTIVITY_REFRESH_UI:必须在主线程中执行(当前正在工作)
谢谢

我在我的活动中有一个处理程序,它针对GAME_ACTIVITY_UPDATE_UI消息必须执行两次操作,并且必须在主线程之外进行一些计算,对于GAME_ACTIVITY_REFRESH_UI必须在...中执行自身。

java android multithreading android-handler android-thread
1个回答
0
投票
您看过AsyncTask吗?如果您的后台任务仅运行几秒钟,则应使用此概念。
© www.soinside.com 2019 - 2024. All rights reserved.