我有两项活动,第一项活动由启动器启动,第二项活动由第一项启动。当我在第一个灵敏度内杀死进程时,进程被终止。但是当我从第二项活动中杀死它时,系统会立即启动一个新流程和第一项活动。 (该进程的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);
}});
}
}
(我知道人们会说一个人永远不能提供一个UI退出程序,但是这是出于安全原因,用户必须有办法退出程序并关闭文件,以便赢得了他的信息“T被泄露。)
考虑用startActivityForResult开始第二个活动,然后使用setResult和finish()将第二个活动的消息传回第一个活动。然后在onActivityResult中捕获消息。打开信息并打电话完成?如果有必要,在第一次活动。 – JAL 2011-05-07 20:13:48