Android 在活动之间切换时处理/销毁线程
我的申请表中有两项活动。MainActivity有一个线程,用于建立与服务器的连接,如下所示:-Android 在活动之间切换时处理/销毁线程,android,thread-safety,Android,Thread Safety,我的申请表中有两项活动。MainActivity有一个线程,用于建立与服务器的连接,如下所示:- public class MainActivity extends Activity implements OnItemSelectedListener { private Socket socket; private static final int SERVERPORT = 8020; private static final String SERVER_IP = "192.168.1.36"
public class MainActivity extends Activity implements OnItemSelectedListener {
private Socket socket;
private static final int SERVERPORT = 8020;
private static final String SERVER_IP = "192.168.1.36";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new ServerThread()).start();
}
public void onClickon(View view) {
try{
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println("0");
}
catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private void newActivity(View view) {
Intent intent = new Intent(MainActivity.this, LockActivity.class);
startActivity(intent);
}
class ServerThread implements Runnable {
@Override
public void run() {
try {
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
socket = new Socket(serverAddr, SERVERPORT);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
当用户单击按钮向服务器发送消息时,将调用onclick函数。
现在,当用户想要转到新活动时,会调用newActivity函数
新活动的代码如下所示
public class NewActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lock);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
public void buttonOKclicked(View v)
{
String msg=Integer.toString(foo);
Intent intent = new Intent(LockActivity.this, MainActivity.class);
intent.putExtra("keyMessage", msg);
startActivity(intent);
}
}
当用户在NewActivity中时,他单击按钮,该按钮调用返回到MainActivity的buttonOkclicked
当用户返回MainActivity时,应用程序无法连接回服务器
我应该如何解决这个问题
我是否可以在创建新活动之前终止服务器线程,这样当用户返回主活动时,就可以启动一个新线程