android 退出系统
2016-07-08 16:19
561 查看
/** * */ 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(); } }
相关文章推荐
- Android实现Activity水平和垂直滚动条的方法
- Mac环境下 Android genymotion nexus5 启动失败问题
- Android vector 标签 pathData
- android 布局优化(二),merge标签
- Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1
- 记录一个android的代码网址
- Android Studio的内存泄漏检测与解决
- Android简易实战教程--第五话《开发一键锁屏应用》
- Android简易实战教程--第五话《开发一键锁屏应用》
- Android多线程编程AsyncTask
- Android开源特效常用链接大集合
- Android中垃圾回收详解
- 安卓(Android) 监听按键长按事件
- android四大组件基础总结
- Android系统自带样式(@android:style/)
- Instagram + Android: Four Years Later
- android usb adb流程
- Android开源特效常用链接大集合
- 关于Android状态栏的一些问题
- MTK Android 6.0 上新增KeyCode