我有一個關於異步任務的基本問題。 我是Android編程的初學者,對於這個問題感到抱歉。Android異步任務和TCP/IP套接字
我打算在doinbackground中打開一個套接字。
doInBackground(...) {
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try {
socket = new Socket(192.168.0.1, 2000);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
}}
當AsyncTask完成後套接字會發生什麼? (只要doInBackground和OnPostExecute已通過)。
套接字是否仍可用?或者它會被垃圾收集器清除?
下一個問題,但實際上是相同的背景。
在AsyncTask完成後,我在doInBackground中實例化的類的實例會發生什麼? (一旦doInBackground和OnPostExecute已經過去。)
------------------------------- --------------------------------------
編輯:
如何創建從Asynctask中的對象到MainActivity的引用?
EDIT2:
那是一個參考主線程? 該代碼示例中的垃圾收集器不會刪除對象嗎?
public class ClientActivity extends Activity {
private IPConnection ipcon;
private Socket Testsocket;
public class IPConnection extends AsyncTask<String, String, IPConnection> {
@Override
protected IPConnection doInBackground(String... message) {
ipcon = new IPConnection();
ipcon.run();
return null;
}
}
}
在此先感謝您。
謝謝您的回答。將AsyncTask中的對象(例如IPConnection ipcon = new IPConnection();)創建爲MainActivity的最簡單方法是什麼?我真的需要一個界面嗎? – snipor
@snipor它取決於你在哪裏創建你的asynctask類,如果你在主活動類中創建它,你不需要創建一個接口,只需要讓IPConnection成爲MainActivity類的成員,那麼你就可以正常/靜態地訪問它。但是,如果asynctask類與MainActivity類(您想使用它的類)處於不同的類中,則必須創建一個接口。我希望你能理解我的解釋:) –
謝謝你的回答。 我已經附上了上面的簡短代碼示例。這是對主線程的引用嗎? – snipor