如何杀死我自己的活动 - 艰难的方式

Nil*_*nck 16 android kill process android-activity

所以我有我的活动,按下"退出"按钮我调用Activity.finish().这有效地关闭了我的申请.

问题:我的应用程序的Dalvik过程仍然像背景中的僵尸一样闲逛.看起来这是正常的,因为其他应用程序也这样做.甚至hello-world示例也在内存中徘徊.

我可以忍受这个,但不幸的是这种行为使我的应用程序的开发变得痛苦.我有一个连接到我的Activity的远程服务,并且在我的Activity卸载之前这个服务不会卸载(正如它所说的那样).

一切都以某种方式保持活着,没有任何理由.

我怎样才能真正从记忆中删除我的活动?

我正在寻找像Activity.finish_and_kill_my_process_please()调用或类似的东西.

小智 24

  1. 呼叫结束(); 点击按钮
  2. 将此行添加到onDestroy方法:

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

    public void onDestroy() {
        super.onDestroy();
        android.os.Process.killProcess(android.os.Process.myPid());
    }       
Run Code Online (Sandbox Code Playgroud)

  • 对于已发布的应用程序,KillProcess()不是一个好主意.但是对于开发阶段(为了调试目的而加速终止应用程序),这可以节省生命.+1. (8认同)

Com*_*are 8

所以我有我的活动,按下"退出"按钮我调用Activity.finish().这有效地关闭了我的申请.

请不要这样做.

我的应用程序的Dalvik过程仍然像背景中的僵尸一样徘徊.

该过程保存在缓存中,以供Android重复使用.你可以放心地忽略它.

我有一个连接到我的Activity的远程服务,并且在我的Activity卸载之前这个服务不会卸载(正如它所说的那样).

您的应用程序中可能存在错误,例如呼叫startService()和未能呼叫stopService(),或呼叫bindService()和未能呼叫unbindService().


Cri*_*ian 6

尝试使用该killBackgroundProcesses方法:

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses("name.of.your.package");
Run Code Online (Sandbox Code Playgroud)

您需要将KILL_BACKGROUND_PROCESSES权限添加到您的AndroidManifest.xml文件中.


Mid*_* VP 5

通过终止进程,您可以完全停止应用程序。从按下后退按钮的最后一个屏幕,您可以通过以下方式终止进程:

public void onBackPressed() {   
        super.onBackPressed();   
        int pid = android.os.Process.myPid();
        android.os.Process.killProcess(pid);    }
Run Code Online (Sandbox Code Playgroud)