无法在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(); 
+0

http://*.com/questions/18856376/android-why-cant处理器-i-create-a-handler-in-new-thread与解决方案类似 –

您无法显示来自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);