/**
*
*/
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 = ;
while (processInfoTokenizer.hasMoreTokens())
{
count++;
processId = processInfoTokenizer.nextToken();
if (count == )
{
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()-; i >= ; i--)
((Activity)activityHistoryWindows.get(i)).finish();
}catch(Exception e){ }finally{
activityHistoryWindows.clear();
}
}

android 退出系统的更多相关文章

  1. [Irving] Android 点击两次返回退出系统

    Activity 中定义成员变量: private Long firstClickTime = 0l; //记录第一次点击时间 重载OnKeyDown方法 代码: @Override public b ...

  2. Android 连续按两次back键退出系统

    需求:在程序的首页,连续按两次back键退出Androd程序. 第一步:新建一个GApplication类继承Application,在GApplication中添加一个用于存放Activity的集合 ...

  3. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)

    Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...

  4. 图解Android - Android GUI 系统 (5) - Android的Event Input System

    Android的用户输入处理 Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块: Input Reader: ...

  5. 管理Activity 用户在主界面按两次回退退出系统

    1:定义一个用于管理Activity的类. /* * 用于管理Activity */ public class SysApp extends Application{ private List< ...

  6. Android日志系统驱动程序Logger源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6595744 我们知道,在Android系统中, ...

  7. 【转】理解 Android Build 系统----不错

    $ mmm -help用法:make [选项] [目标] ...选项: -b, -m 忽略兼容性. -B, --always-make Unconditionally make all targets ...

  8. Android双系统实现

    1. 前言: 刷机,似乎是安卓手机用户的一项专利,可是,会刷机的用户一般都是喜新厌旧的角色. 一个系统用久了.就想换到还有一个系统.或者认为没有原来的好,或者又认为要换回去.这样又要重刷. 可是刷来刷 ...

  9. 《深入理解Android 卷III》第五章 深入理解Android输入系统

    <深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白.即Android Framework中和UI相关的部分. ...

随机推荐

  1. 在SAE上使用Ueditor的图片上传功能

    SAE上是没有文件夹读写权限的,所以要在SAE使用Ueditor的图片上传功能须要借助SAE的Storage服务. 一.开通Storage服务 在SAE控制台开通Storage服务,并新增一个doma ...

  2. 阿里云服务器用Docker配置运行nginx并访问

    一.Docker拉取nginx镜像 docker pull nginx:1.12.2 这里是下载的是nginx的1.12.2版本,其他版本的镜像请访问https://hub.docker.com/r/ ...

  3. Spark的数据存储(十九)

    Spark本身是基于内存计算的架构,数据的存储也主要分为内存和磁盘两个路径.Spark本身则根据存储位置.是否可序列化和副本数目这几个要素将数据存储分为多种存储级别.此外还可选择使用Tachyon来管 ...

  4. Kylin基础教程(二)

    近期先把Kylin教程整理完毕,后续根据大家需求(可能会发起投票),整理其他技术栈知识教程. OK,那么接上一篇文章,感性认知了Kylin之后,我们先来看一下如何部署Kylin吧. 序号也依然沿用上一 ...

  5. MVC bundle配置文件模板

    bundle文件放在应用根目录,命名为  bundle.config 内容模板 <?xml version="1.0" encoding="utf-8"? ...

  6. 浅谈SpringCloud (二) Eureka服务发现组件

    上面学习到了如何由一个程序访问另一个程序,那么如果使用SpringCloud来进行访问,该如何访问呐? 可以借助Eureka服务发现组件进行访问. 可以借助官方文档:https://spring.io ...

  7. <Android Framework 之路>Android5.1 Camera Framework(三)

    上一次讲解了一下startPreview过程,主要是为了画出一条大致的从上到下的线条,今天我们看一下Camera在Framework的sendCommand和dataCallback,这部分属于衔接过 ...

  8. Android的Activity的小知识点

    1.android的四种启动模式分别是:standard,singleTop,SingleTask,singleInstance. 我们可以在AndroidMainfest.xml中通过Activit ...

  9. ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境

    网络上有很多ubuntu上caffe配置环境的帖子,本人照着其中的许多进行了参考,都出现了或多或少的错误,很多地方也有差异. 于是自己整理了下自己的安装过程,成功进行了测试,跑通了faster-rcn ...

  10. PhotoZoom安装之后没有快捷方式怎么解决?

    相信初次安装PhotoZoomPro的小伙伴都有这样的经历,就是软件安装完成之后桌面上并没有生成快捷方式,而且在所有程序里也找不到这个软件.这样的话,对于下次启动软件就相当困难了,甚至有些朋友为此又重 ...