Android 不能同时杀死2个活动。为什么呢?

Android 不能同时杀死2个活动。为什么呢?,android,pid,Android,Pid,我试着一按按钮就杀死两个活动。当前活动和上一个活动。使用他们的PID。我只能杀死一个活动。为什么会发生这种情况 public void onClick(View v) { android.os.Process.killProcess(pidofmain); android.os.Process.killProcess(android.os.Process.myPid()); } 如果我在日志中看

我试着一按按钮就杀死两个活动。当前活动和上一个活动。使用他们的PID。我只能杀死一个活动。为什么会发生这种情况

public void onClick(View v) {

                android.os.Process.killProcess(pidofmain);
                android.os.Process.killProcess(android.os.Process.myPid());

                }
如果我在日志中看到,pid为“pidofmain”的活动将被杀死,而当前活动不会被杀死


“pidofmain”是我使用intent从上一个活动中收到的整数。

将进程终止留给操作系统。这对分时操作系统中的任何程序都是有害的。如果你想节省内存或类似的东西,让操作系统来处理。 你也不能真正知道进程是否被正确终止,因为如果是,你就不知道,如果不是,你就不应该这样做。
执行此操作的目的是什么?

更好的方法是为当前活动调用
finish()
。如果前一个活动调用当前活动,您还可以使用
startActivityForResult(Intent)
向其发出完成的信号。当前活动将调用
setResult(int)
,然后调用
finish()
将返回代码发送回上一个活动。前面的活动可以在activityresult(int,int,Intent)中测试返回代码,还可以根据结果代码调用
finish()


终止进程应该留给操作系统。一旦活动完成,如果它需要资源,它会将其杀死。否则,它可以让它运行,如果用户想再次运行,这可能有助于加快应用程序的重新启动。

这不是一个确定的答案,但更像是我的一些想法,但现在启动Eclipse并制作原型已经太晚了。如果这对你没有帮助,请告诉我,明天晚上我会深入调查。
一些想法(我希望能有所帮助):
1) Android应用程序实际上是单线程的,您的主要活动控制所有调度事件(包括您创建的第二个线程的事件)。如果你杀死了主活动,我敢肯定你的应用程序会在你第一次调用
android.os.Process.killProcess(pidofmain)
后立即终止执行,而且你永远也不会进行第二次调用,因为你会杀死整个应用程序。同样,这是通过变量名pidofmain假设您正在终止主UI线程,而不仅仅是一个名为main的活动。
2) 我也有点好奇你从哪弄来的皮多夫曼?听起来您总共有三个活动,在第一个活动中,您获得了它的进程id,并将其发送给意图包中的第二个活动,该活动也会传递给第三个活动(即您试图杀死整个事件的地方)?如果是这种情况,并且您试图终止当前正在运行的活动,那么文档中的表让我相信,您不能使用相同的方法终止处于恢复状态的活动。您可能希望尝试为当前正在运行的活动调用finish()方法


你在logcat中到底看到了什么?UI中会发生什么?可见活动是否继续运行,但另一个活动已从后台删除?

你为什么要杀死自己的应用程序?您是否研究过
finish()
方法?