虽然在自己的线程上运行长期任务很有用,但是为了更新UI组件,在UIThread中运行代码是必要的。否则,您的应用程序将在执行期间抛出CalledFromWrongThreadException。如何在UIThread上运行代码?
答案 0 :(得分:1)
有很多方法可以实现:
方法1:
runOnUiThread(new Runnable() {
@Override
public void run() {
// do something
}
});
了解详情:http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/#ixzz3hnx3hdS5
答案 1 :(得分:1)
是的,你可以使用处理程序在Worker Thread和UI Thread之间进行通信,将下面的代码片段放入你想要更新UI的工作线程中,
Message message = new Message();
Bundle bundle = new Bundle();
bundle.putString("file", pdfPath);
message.setData(bundle);
handler.sendMessage(message); // pass handler object from activity
将与Handler相关的代码放入Activity类
Handler handler = new android.os.Handler() {
@Override
public void handleMessage(Message msg) {
String filePath = msg.getData().getString("file"); // You can change this according to your requirement.
}
};
如果您不熟悉Handler机制,请先阅读以下链接,它会对您有所帮助
https://developer.android.com/training/multiple-threads/communicate-ui.html