安卓应用程序在 System.exit(0); 后重新启动。

5
我正在创建一个涉及多线程的应用程序,我想要关闭它。我尝试过以下方法:
System.exit(0);

但应用程序会自动重启。

请帮忙,谢谢。

编辑:

OnDestroy 代码:

@Override
public void onDestroy(){
    android.os.Process.killProcess(android.os.Process.myPid());
}

OnOptionsItemClicked:

@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
请看这里:https://dev59.com/dXI95IYBdhLWcg3w7CjL - Ezzored
4
请勿使用 System.exit(0)。请使用 Thread 上适当的方法停止线程。 - CommonsWare
你真的需要 System.exit(0) 吗?查看 CommonsWare 的答案:https://dev59.com/w3I-5IYBdhLWcg3wED5V - Raghunandan
2
“如何停止匿名线程?” - 保留 Thread 对象。然后,执行某些操作来导致线程关闭(例如,interrupt(),翻转您正在监视的 AtomicBoolean,将 ShutdownEvent 发布到您正在监视的 LinkedBlockingQueue)。 - CommonsWare
好的。我已经尝试了第一个链接,但应用程序仍然在不断重启。 - Cako
显示剩余2条评论
1个回答

0

最终我通过停止线程解决了这个问题。感谢大家。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接