写打印demo过程中,在一个回调里直接写了Toast
public void onBitmapPrintClick(View view){
//省略不重要代码
printer.print(bitmap, new IPrinter.IPinterListener() {
@Override
public void onSucc() {
showToast(getString(R.string.print_success));
}
@Override
public void onError(final int i) {
showToast(getString(R.string.print_fail, i));
}
});
}catch (Exception e){
e.printStackTrace();
}
}
private void showToast(String str){
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
直接这样写,运行程序,接口回调后并没有显示Toast,也没有报错信息。因为是第三方的接口,回调可能不在主线程中,将Toast添加在UI线程中就可行了。
runOnUiThread(new Runnable() {
@Override
public void run() {
showToast(getString(R.string.print_success));
}
});
安卓原生的按键监听回调是回到主线程中的,直接写就可以,回调有没有在主线程还是要看源码来确定。