2013-03-05 72 views
0

相當新的Android和創建/測試我的應用程序使用Android 2.3.5(薑餅)。我有多個數據庫連接,我使用HTTP Post(但沒有使用AsyncTask),一切都很好。然後我在Android 4.0.3(Ice Cream Sandwhich)上測試了它,我無法連接到數據庫,因此我的應用程序無法正常工作。Android冰淇淋Sandwhich與薑餅HTTP Post

想知道我需要考慮什麼才能讓這個工作應用程序運行在冰淇淋Sandwhich上?我沒有將數據庫連接移出UI線程(但不是AsyncTask),但它仍然無法連接。

這裏是我的課堂我我的UI線程之外創建:

公共類InputsRecapGetTask {

public InputsRecapGetTask(InputsRecap activity, 
     ProgressDialog progressDialog) { 
    this.activity = activity; 
    this.progressDialog = progressDialog; 

    getDatabase(); 

} 

public void getDatabase() { 
    // TODO Auto-generated method stub 
    progressDialog.show(); 

    // create new default httpClient 
      HttpClient httpclient = new DefaultHttpClient(); 
      // create new http post with url to php file as pararmenter 
      HttpPost httppost = new HttpPost(
        "http://test.com/returnBBD.php"); 

      // assign input text to strings 
      user = Login.userStatic; 
+0

使用asynctask。 Asynctask應該可以工作,並且它是大多數人推薦的。 – Raghunandan 2013-03-05 02:10:01

回答

0

你檢查日誌? IIRC,Android 4要求http請求不是從主線程完成的。必須有一條消息說明這一點。

在另一方面,請記住,

  1. ,如果你打開屏幕,創建了的AsyncTask可以 從屏幕(永遠)被移除並用另一個 活動取代了活動;它(第一項活動)將收到結果,但不會顯示任何內容;

  2. 在Android 4中,所有的AsyncTasks默認由一個線程 提供服務;這保證了響應按照 請求的順序到達,但也意味着第二個請求將在 第一個請求完成(或超時)之後纔會啓動。

根據MVC中,數據檢索必須由模型完成,而不是通過控制器(活動),其壽命是一個視圖。

+0

我繼續嘗試在它自己的類中使用AsyncTask,但仍然崩潰。數據庫檢索在用戶界面中使用,因此根據logcat,我認爲這是問題的來源。我試圖在SetContentView之前移動AsyncTask,但那也沒有解決問題。 – user1720683 2013-03-05 14:15:06

+0

更新:我使用了AsyncTask並將任務移至屏幕上,以確保它在新UI之前上傳。這解決了冰淇淋三明治崩潰的問題。謝謝! – user1720683 2013-03-05 15:02:33

相關問題