我在我的活动中有一个处理程序,它执行两项操作,对于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必须在...中执行自身。