如何杀死进程?

wwy*_*wyt 3 android process

我有两个活动,第一个活动是由Launcher启动的,第二个活动是由第一个活动启动的.当我杀的过程中从第一胡亚蓉内,过程就会被杀死.但是当我从第二个活动中杀死它时,系统会立即启动一个新进程和第一个活动.(进程的PID发生了变化.)我怎样才能干净利落?

我尝试了3种不同的方法来杀死进程:System.exit(0),android.os.Process.killProcess(pid),以及非编程方式来自Eclipse的Devices面板.

以下是我经历过的两个世界上最简单的活动.它们都是各自文件中的外部类.

public class FirstActivity extends Activity  {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ((Button)findViewById(R.id.button)).setOnClickListener(
            new OnClickListener() {
                public void onClick(View v) {
                    startActivity(new Intent(FirstActivity.this, 
                        SecondActivity.class));
        }});
    }
}

public class SecondActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_2);
        ((Button)findViewById(R.id.button)).setOnClickListener( 
            new OnClickListener() {
                public void onClick(View v) {
                    // Method 1
                    int pid = android.os.Process.myPid();
                    android.os.Process.killProcess(pid);
                    // Method 2
                    System.exit(0);
        }});
    }
}
Run Code Online (Sandbox Code Playgroud)

(我知道人们说永远不应该提供一个用户界面退出程序.但这是出于安全原因.用户必须有办法退出程序并关闭文件,这样他的信息就不会泄露.)

Chr*_*ton 6

你可以尝试这个.finish()

其他选择在没有通知android系统的情况下终止进程,而android系统假定用户想做的事情已经崩溃并重新启动它.

但是你关于关闭防止数据泄漏的活动的假设是错误的.如果要提供注销按钮,请执行此操作并使其取消用于获取访问权限的访问权限/密钥.

还要考虑如果其他活动在没有用户离开你的情况下进入前台会发生什么 - 例如,如果他们接到电话怎么办?