2014-10-29 2 views
0

TodoOffine azure 모바일 서비스 샘플의 Android 버전을 실행하려고하는데 push 및 pull 명령을 실행할 때 응용 프로그램이 충돌합니다. 누구든지이 문제를 이해합니까? Azure 모바일 서비스, 응용 프로그램이 다운 됨 (오프라인 동기화 - Android)

샘플의 코드이다

new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected Void doInBackground(Void... params) { 
       try { 
        mClient.getSyncContext().push().get(); 
        mToDoTable.pull(mPullQuery).get(); 
        refreshItemsFromTable(); 
       } catch (Exception exception) { 
        createAndShowDialog(exception, "Error"); 
       } 
       return null; 
      } 

     }.execute(); 

로그 캣 :

10-29 13:31:16.448 25390-25478/com.example.blog20140807 E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #4 
Process: com.example.blog20140807, PID: 25390 
java.lang.RuntimeException: An error occured while executing doInBackground() 
     at android.os.AsyncTask$3.done(AsyncTask.java:300) 
     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
     at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
     at java.lang.Thread.run(Thread.java:841) 
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
     at android.os.Handler.<init>(Handler.java:200) 
     at android.os.Handler.<init>(Handler.java:114) 
     at android.app.Dialog.<init>(Dialog.java:109) 
     at android.app.AlertDialog.<init>(AlertDialog.java:114) 
     at android.app.AlertDialog$Builder.create(AlertDialog.java:931) 
     at com.example.blog20140807.ToDoActivity.createAndShowDialog(ToDoActivity.java:343) 
     at com.example.blog20140807.ToDoActivity.createAndShowDialog(ToDoActivity.java:327) 
     at com.example.blog20140807.ToDoActivity.access$700(ToDoActivity.java:44) 
     at com.example.blog20140807.ToDoActivity$2.doInBackground(ToDoActivity.java:197) 
     at com.example.blog20140807.ToDoActivity$2.doInBackground(ToDoActivity.java:188) 

답변

2

즉 UI 스레드로 진행 실행 가능한 상기 createAndShowDialog있어서 내부 builder.create().show();에 호출을 배치보십시오

private void createAndShowDialog(String message, String title) { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage(message); 
      builder.setTitle(title); 
      builder.create().show(); 
     } 
    }); 
} 
+0

감사합니다. 카를로스, 앞으로 도움을 요청할 수 있습니다. –

관련 문제