2014-10-29 103 views
0

我試圖運行TodoOffine azure移動服務示例的Android版本,但當推拉命令執行時,我的應用程序崩潰。 有誰知道這個問題?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(); 

logcat的:

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線程纏繞調用builder.create().show();createAndShowDialog方法內:

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

謝謝卡洛斯,也許我會在將來需要你的幫助。 – 2014-10-30 08:05:26