我有一个关于异步任务的基本问题。 我是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