【发布时间】:2011-05-07 18:15:28
【问题描述】:
我有两个activity,第一个activity由Launcher启动,第二个activity由第一个启动。当我从第一个活动中杀死 进程 时,该进程被杀死。但是当我从第二个活动中杀死它时,系统会立即启动一个新进程和第一个活动。 (进程的PID改变了。)我怎样才能干净地做到这一点?
我尝试了 3 种不同的方法来终止进程:System.exit(0)、android.os.Process.killProcess(pid),以及通过 Eclipse 的“设备”面板以非编程方式。
以下是我体验过的两个世界上最简单的活动。它们都是各自文件中的外部类。
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 来退出程序。但这是出于安全原因。用户必须有一种方法来退出程序并关闭文件,这样他的信息就不会被泄露。)
【问题讨论】:
-
考虑使用 startActivityForResult 启动第二个活动,然后使用 setResult 和 finish() 将消息从第二个活动传递回第一个活动。然后在 onActivityResult 中捕获消息。打开消息并通话结束?如有必要,在第一个活动中。