我有一个非常好的代码。但当我运行几个时,我的应用程序崩溃了这个错误:
03-24 14:47:34.542 3489-3546/com.example.com E/AndroidRuntime﹕ FATAL EXCEPTION: pool-4-thread-1
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我的代码:
public class Sample {
public Sample(Context context) {//error for this line
mContext = context.getApplicationContext();}
public void doSignUp( String firstName, String lastName, String userName) {
//some code for signup users
}
}
public class Service {
Runnable task = new Runnable() {
@Override
public void run() {
Sample sample = new Sample(getApplicationContext());
Sample.doSignUp(firstName,lastName,userName);
decreaseCounter();
if(getCounter() <= 0){
stopSelf();
}
}
};
答案 0 :(得分:0)
你的问题是你很可能试图从后台线程更新UI组件(这是一个不在主线程上运行的线程 - 或者&#34; UI线程&#34;因为你很可能会读在其他地方),为了达到这个目的,你应该通过一个&#34; Handler&#34;这是在任一活动或片段(或在Main \ UI线程上创建的其他东西)上创建的,因为处理程序连接到WHERE IT WAS CREATED它将充当&#34;桥接&#34;两个线程之间。 你得到的错误来自操作系统,那个Looper对象是负责推送&#34;推送&#34;任务到主\ ui线程任务队列。 您也可以使用asynctask,它基本上可以为您执行上述操作。