2013-05-08 127 views
2

您好,我正在嘗試從Android應用程序註冊用戶。 我安裝了Xampp,我創建了我的數據庫,我創建了一個php頁面,將被調用以將數據保存在數據庫中。當我把url http://192.168.xx/ah_login_api/訪問到我的php文件時。例外類型:「android.os。 NetworkOnMainThreadException「在$ android.StrictMode AndroidBlockGuardPolicy.onNetwork將Android應用程序連接到Xamppp服務器

我不明白問題在哪裏!

回答

1

您需要使用AsyncTask才能完成所有網絡操作。

您的網絡操作可能需要很長時間,並且如果UI在主UI線程上完成,UI將無響應。如果您的用戶界面長時間凍結,該應用可能會被操作系統殺死。

因此,Android 4+強制使用後臺線程來執行網絡操作。

把代碼做的網絡活動中doInBackground()和使用​​所有的AsyncTask。

這是你的AsyncTask會是什麼樣子:

private class MyAsyncTask extends AsyncTask<String, Integer, Void> { 
     protected void doInBackground() { 
        sendEmail(); 
 } 

 protected void onProgressUpdate() { 
    //called when the background task makes any progress 
 } 

  protected void onPreExecute() { 
     //called before doInBackground() is started 
 } 
 protected void onPostExecute() { 
     //called after doInBackground() has finished  
 } 
  } 

而且你可以把它用new MyAsyncTask().execute("");

+0

有關的URL,他XAMPP服務器?什麼是真正的網址? – mzpx 2013-05-08 19:04:46

+0

NetworkOnMainThread異常與URL無關。 – Swayam 2013-05-08 19:07:46

+0

我的問題是:我必須把URL放在xampp服務器上的php文件中? – mzpx 2013-05-08 19:10:51

0

你需要的地方使用newtwork操作的的AsyncTask,因爲運行在長期的經營中主線程可能會延遲到你的UI,甚至使它無法響應。

雖然這是最好使用的AsyncTask,您也可以只使用另一個線程

像:

Thread xamp = new Thread(){ 

public void run(){ 
//Your network operation here 
} 

}; 
xamp.start(); 

參考文獻:http://developer.android.com/reference/android/os/AsyncTask.html

+0

關於URL他xampp服務器?什麼是真正的網址? – mzpx 2013-05-08 19:02:59

+0

@ user2363546,您的網址爲特定文件,例如:http://127.0.0.1/project1/register.php – CartMan 2013-05-20 17:05:59

相關問題