Java Android应用程序在系统上重新启动。退出(0);
我正在创建一个有一些线程的应用程序,我想关闭它。我尝试了:Java Android应用程序在系统上重新启动。退出(0);,java,android,Java,Android,我正在创建一个有一些线程的应用程序,我想关闭它。我尝试了: System.exit(0); 但是应用程序会自动重启 请帮帮我,谢谢 编辑: OnDestroy代码: @Override public void onDestroy(){ android.os.Process.killProcess(android.os.Process.myPid()); } OnOptions项目已单击: @Override public boolean onOptionsItemSelected(M
System.exit(0);
但是应用程序会自动重启
请帮帮我,谢谢
编辑:
OnDestroy代码:
@Override
public void onDestroy(){
android.os.Process.killProcess(android.os.Process.myPid());
}
OnOptions项目已单击:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:
startActivity(new Intent(this, ConnActivity.class));
finish();
break;
case R.id.item2:
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
break;
case R.id.item3:
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Mensaje al servidor");
alert.setMessage("Enviar mensaje al servidor");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Enviar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
MessageRequest msqr = new MessageRequest();
msqr.msg = new Packets.Message();
msqr.msg.lidfrom = pi.getPhoneLoginIdentifier();
msqr.msg.lidto = new LoginIdentifier("SERVER","SERVER","-1");
msqr.msg.msg = value;
setTime(msqr.msg);
send(msqr);
}
});
alert.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
try{
alert.show();
}catch(Exception e){
}
break;
}
return true;
}
最后我通过停止线程解决了这个问题。多亏了所有的请看这里:[[1]:请不要使用
System.exit(0)
。请使用thread
上的适当方法停止你的线程。你真的需要System.exit(0)
。用Commonware检查答案如何停止匿名线程?“如何停止匿名线程?”--抓住thread
对象。然后,采取措施使线程关闭(例如,interrupt()
,翻转正在监视的AtomicBoolean
,将ShutdownEvent
发布到正在监视的LinkedBlockingQueue
)。