2016-03-25 23 views
0

非常にうまくいくコードがあります。しかし、私は実行したときに、いくつかのこと、このエラーの私のアプリのクラッシュ:数回プロジェクトを実行するとエラーが発生する

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(); 
       } 
      } 
     }; 
+1

コードを共有していただけますか – Ghayel

+1

関連コードを投稿してください。 –

+0

私はいくつかの時間を実行し、その後、私のプロジェクトを削除し、作業を再作成すると動作しないことに注意してください。 – Tom

答えて

0

あなたの問題は、あなたが(そのバックグラウンドスレッドからUIのcomponenetを更新しようとしprobableyであるということです(つまり、メインスレッドで実行されないスレッド、または "UIスレッド"は他の場所で読み込まれる可能性が高い)、アクティビティまたはフラグメントで作成された "ハンドラ"を渡す必要があるまたは何かMain \ UIスレッドで作成されている)ハンドラが2つのスレッド間の "ブリッジ"として動作する場所に接続されているためです。 あなたが得ているエラーは、OSからです。そのルーパーオブジェクトは、タスクをメイン\ uiスレッドタスクキューに「プッシュ」する責任があります。 asynctaskを使用することもできます。これは基本的に上記のことを行います。

関連する問題