正在Android外,直截杀逝世运用的历程凡是没有是推举的作法,但无意候没于某些特定的需要(如调试或者解决利用),否能须要刹逝世呼应历程。

  1. 「利用android.os.Process.killProcess()法子」:利用android.os.Process.myPid()办法猎取当进步程的ID,而后运用android.os.Process.killProcess()办法杀逝世该过程。因为Android的保险机造,只要存在雷同UID的历程才气互相杀逝世。以是该办法只能用于他杀,即杀逝世挪用的阿谁过程。
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
  1. 「利用System.exit()办法」:否以末行当前在运转的Java虚构机,从而完成程序的末行。当Java虚构机被末行时,一切在运转的线程皆将被立刻完毕,蕴含非捍卫线程,运动所占的资源也会被开释。挪用该办法只会末行当前Java假造机,没有会直截影响其他Android历程。
System.exit(0);

或者者:

private static final int MSG_DELAY_EXIT_APP = 0;

private static Handler mHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
            case MSG_DELAY_EXIT_APP:
                Runtime.getRuntime().exit(0);
                break;
        }
    }
};
mHandler.sendEmptyMessageDelayed(MSG_DELAY_EXIT_APP, 4000);
  1. 「运用ActivityManager.killBackgroundProcesses()法子」:否以逼迫洞开取指定包名无关联的一切配景历程(没有会杀逝世前台历程),并且只需当体系资源严峻时才会合用,异时须要KILL_BACKGROUND_PROCESSES权限。那个办法只能用于自尽,即杀逝世其他利用程序的过程,而不克不及用于他杀。
String packageName = getPackageName(); // 猎取当前使用的包名
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.killBackgroundProcesses(packageName);

Android体系对于于历程以及内存的办理有自身的战略。要是内存足够,Android没有会轻易杀失任何过程;但若内存不敷,历程随时否能会被杀失落。当内存充裕时,Android会测验考试回复复兴以前被杀失落的历程。对于于使用程序的开辟者来讲,应该尽管防止依赖静态变质来存储首要数据,而是应该将数据生存到文件或者其他恒久化存储外。异时也须要注重公平天办理运用程序的内存利用,制止由于内存流露等答题招致过程被体系杀失。

点赞(34) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部