无法在android 4.0及更低版本中未调用Looper.prepare()的线程中创建处理程序
问题描述:
我在android api 14(4.0)及更低版本中遇到此错误,但在api级别15和上方每件事情都很好。 ?无法在android 4.0及更低版本中未调用Looper.prepare()的线程中创建处理程序
thread = new Thread(new Runnable() {
public void run() {
try {
//do some thing
} catch (Exception e) {
} finally {
runOnUiThread(new Runnable() {
@Override
public void run() {
//do some thing
}
});
}
}
});
thread.start();
答
您无法显示来自thread
的吐司消息。您需要使用actvity UI线程来显示任何UI元素。
Toast.makeText(context, Message, Toast.LENGTH_LONG);
所以这应该是:
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();
}
});
或者,你可以用它代替螺纹
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
try {
//do some thing
} catch (Exception e) {
Toast.makeText(context, Message, Toast.LENGTH_LONG);
} finally {
//do work
}
}
}, 1000);
http://stackoverflow.com/questions/18856376/android-why-cant处理器-i-create-a-handler-in-new-thread与解决方案类似 –