2012-11-01 93 views
1

我想連接到URL並在此之後斷開連接。但是在Android 4.1上的更新(之前在2.3.7上工作)之後,它不再工作了! :/URL連接 - 無連接

爲什麼?我不知道:

public void insert_into_Mysql() { 
    URL url = new URL("http://***/insertOrder.php?product="+product+"&owner="+owner); 
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
    try { 
     openActivityOverview(product); 
    } finally { 
     urlConnection.disconnect(); 
    } 

關注的是插在mysql-表...

感謝您的幫助! :)

+0

獲取任何錯誤? – ckpatel

+2

Android 3.0,在主UI線程中打開一個URL連接是不合法的。您必須在AsyncTask中執行此操作。或創建新的線程和使用線程。運行 – steevoo

+0

我的錯誤解決。 – ckpatel

回答

2

在線程中寫入url連接。

從Android API v15開始,它在主線程上不需要繁重的進程。所以,你應該你的邏輯轉移到像波紋管的源代碼另一個線程:

new Thread(new Runnable() { 
    public void run() { 
     // your logic 
    }       
}).start(); 

更多信息,請參閱http://developer.android.com/guide/practices/responsiveness.html

1

可以使用的AsyncTask執行後臺操作,比如網絡。

private class ATask extends AsyncTask 
{ 

    public ATask() 
    { 
    } 

    @Override 
    protected Object doInBackground(Object... params) 
    { 
     // Background logic here. 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Object result) 
    { 
     // Foreground logic here. 
    } 
} 

另外,您可以禁用mainthread限制無網絡,但一般認爲這是一個壞主意,並可能不應該在室外使用的玩耍。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()。permitAll()。build(); StrictMode.setThreadPolicy(policy);