我想在新Thread
中将数据保存到数据库,然后在toast
上显示UI
。
保存方法:
public void addToBasket(String text) {
new Thread(() -> {
//emulate save
try {
Thread.sleep(5000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
//after that I need say ti UI thread - show Toast!
}).start();
}
我称这种方法为:
BasketService.me().addToBasket(result.getContents());
我现在想要使用AsyncTask
。请告诉我实施此类任务的最佳方式
答案 0 :(得分:-1)
要使用的击球手:
runOnUiThread(new Runnable() {
public void run() {
//Do what ever you want do man
}
});
runOnUiThread()
方法从后台线程操作UserInterface
。
答案 1 :(得分:-1)
如果从nonUi线程回调到Ui线程,您可以使用runOnUiThread()(如上所述)或Handler。下面是使用处理程序的示例。
protected static final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
protected void onSuccessInMainThread(final R result, final Bundle bundle) {
mainThreadHandler.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(result, bundle);
}
});
}
protected void onErrorInMainThread(final Exception error) {
mainThreadHandler.post(new Runnable() {
@Override
public void run() {
callback.onError(error);
}
});
}