android 强制退出程序,Android 强制且彻底的退出app

方法1、使用MyApplication.java文件代码如下:

package com.ss.zshcloud.utils;

import android.app.Activity;

import android.app.Application;

import java.util.LinkedList;

import java.util.List;

public class MyApplication extends Application {

//用于将所有activity存在一起用于最后统一finish便于退出

private ListactivityList = new LinkedList();

private static MyApplication instance;

private MyApplication()

{

}

//单例模式中获取唯一的MyApplication实例

public static MyApplication getInstance()

{

if(null == instance)

{

instance = new MyApplication();

}

return instance;

}

//添加Activity到容器中

public void addActivity(Activity activity)

{

activityList.add(activity);

}

//遍历所有Activity并finish

public void exit()

{

for(Activity activity:activityList)

{

activity.finish();

}

System.exit(0);

}

}

1280695118269005824.htm

最后再MyApplication.getInstance().exit();方法可以退出那些简单程序。

方法2、使用System.Exit(0),之前不关闭所有activity和service会重启app。

方法3、使用SuUtil.java代码如下:

package com.ss.zshcloud.utils;

import java.io.IOException;

import java.io.OutputStream;

public class SuUtil {

private static Process process;

/**

* 结束进程,执行操作调用即可

*/

public static void kill(String packageName) {

initProcess();

killProcess(packageName);

close();

}

/**

* 初始化进程

*/

private static void initProcess() {

if (process == null)

try {

process = Runtime.getRuntime().exec("su");

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 结束进程

*/

private static void killProcess(String packageName) {

OutputStream out = process.getOutputStream();

String cmd = "am force-stop " + packageName + " \n";

try {

out.write(cmd.getBytes());

out.flush();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 关闭输出流

*/

private static void close() {

if (process != null)

try {

process.getOutputStream().close();

process = null;

} catch (IOException e) {

e.printStackTrace();

}

}

}

1280695118269005824.htm

调用SuUtil.kill(包名)会完全退出app,但该app需要设置root权限。

方法4、最后成功的方法

int currentVersion = android.os.Build.VERSION.SDK_INT;

Log.i("println","currentVersion:"+currentVersion+" android.os.Build.VERSION_CODES.ECLAIR_MR1:"+android.os.Build.VERSION_CODES.ECLAIR_MR1);

if (currentVersion > android.os.Build.VERSION_CODES.ECLAIR_MR1) {

Intent startMain = new Intent(Intent.ACTION_MAIN);

startMain.addCategory(Intent.CATEGORY_HOME);

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

mContext.startActivity(startMain);

System.exit(0);

} else {// android2.1

ActivityManager am = (ActivityManager)mContext. getSystemService(Context.ACTIVITY_SERVICE);

am.restartPackage(mContext.getPackageName());

}

androidmanifest.xml方要添加权限:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值