例如,如果我有一个线程正在执行昂贵的操作,并且我想从该线程在 Main(活动)类中触发 runOnUiThread。显然我不应该创建我的活动类(主要)的实例。所以如果我尝试
Main.runOnUiThread(mRunnable);
从我的线程中,它给了我一个错误,说它不是静态方法,因此无法以我的方式访问它。现在我的理解是,活动类几乎几乎是以静态方式访问的。
我该怎么做?
(顺便说一句:我这样做是因为我得到调用FromWrongThreadException,只有创建视图层次结构的原始线程才能触摸它的视图)
劳纳克的想法是正确的。我只是补充一点,您还可以在方法 sendEmptyMessage 中指定一个整数作为处理程序的标识符。这将允许您创建一个可以处理所有 UI 更新的处理程序,例如
public static final int EXAMPLE = 0;
public static final int ANOTHER_EXAMPLE = 1;
private final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch( msg.what ){
case EXAMPLE:
//Perform action
break;
case ANOTHER_EXAMPLE;
//Perform action
break;
}
}
}
//Call to submit handler requesting the first action be called
handler.sendEmptyMessage(EXAMPLE);
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)