android 退出系统
16lz
2021-01-25
/** * */package com.szkingdom.android.phone.utils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;import android.app.Activity;import android.content.Context;import android.util.Log;import android.view.View;import android.webkit.CookieManager;import com.szkingdom.activity.basephone.ActivityStackMgr;import com.szkingdom.android.phone.R;import com.szkingdom.android.phone.widget.KdsDialog;import com.szkingdom.android.phone.widget.KdsSureDialog;import com.szkingdom.common.android.base.OriginalContext;import com.szkingdom.common.android.base.Res;import com.szkingdom.commons.log.LogcatHelper;import com.szkingdom.android.phone.KdsAgentMgr;import com.szkingdom.android.phone.widget.KdsDialog.OnClickButtonListener;/** * @author duminghui * */public class ExitConfirm{ private static KdsDialog mKdsSureDialog; public static final void confirmExit(final Context context) { mKdsSureDialog = new KdsDialog(context,"提示",Res.getString(R.string.kds_exit_dialog_content), new OnClickButtonListener() { @Override public void onClickButton(View view) { // TODO Auto-generated method stub } }, new OnClickButtonListener() { @Override public void onClickButton(View view) { if(mKdsSureDialog != null && mKdsSureDialog.isShowing()){ mKdsSureDialog.dismiss(); finishProcess(context); } } }); mKdsSureDialog.show(); } /** * 结束整个进程 * @param context */ public static void finishProcess(Context context){ //友盟统计接口方法,如果开发者调用 Process.kill 或者 System.exit 之类的方法杀死进程, //请务必在此之前调用此方法,用来保存统计数据 KdsAgentMgr.onKillProcess(OriginalContext.getContext()); //清除所有cookie CookieManager.getInstance().removeAllCookie(); LogcatHelper.getInstance(context).stop(); ActivityStackMgr.exitActivityHistory(); Activity activity = (Activity) context; activity.finish(); killProcess(context); } private static void killProcess(Context ctxt) { String packageName = ctxt.getPackageName(); String processId = ""; try { Runtime r = Runtime.getRuntime(); Process p = r.exec("ps"); BufferedReader br = new BufferedReader(new InputStreamReader( p.getInputStream())); String inline; while ((inline = br.readLine()) != null) { if (inline.contains(packageName)) { break; } } br.close(); StringTokenizer processInfoTokenizer = new StringTokenizer(inline); int count = 0; while (processInfoTokenizer.hasMoreTokens()) { count++; processId = processInfoTokenizer.nextToken(); if (count == 2) { break; } } // Log.e(TAG, "kill process : " + processId); r.exec("kill -15 " + processId); } catch (IOException ex) { // Log.e(TAG, "" + ex.getStackTrace()); } }}
public static List<ISubTabView> activityHistoryWindows = new ArrayList<ISubTabView>(); public static void exitActivityHistory(){ try{ for(int i = activityHistoryWindows.size()-1; i >= 0; i--) ((Activity)activityHistoryWindows.get(i)).finish(); }catch(Exception e){ }finally{ activityHistoryWindows.clear(); } }
更多相关文章
- 一款霸榜 GitHub 的开源 Linux 资源监视器!
- Android(安卓)Light Sensor
- Android锁屏后主Activity的onDestroy方法被调用导致黑屏问题解决
- Android(安卓)stdio笔记
- android杀不死的Service
- 纸上得来终觉浅,绝知此事要躬行。Broadcast和Fragment详解
- android onCreate中获取view宽高为0的多种解决方法
- Android(安卓)init进程--属性服务器
- android开发之widget控件突然停止更新的原因