/**
*
*/
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. HDU 1160 FatMouse&#39;s Speed DP题解

    本题就先排序老鼠的重量,然后查找老鼠的速度的最长递增子序列,只是由于须要按原来的标号输出,故此须要使用struct把三个信息打包起来. 查找最长递增子序列使用动态规划法.主要的一维动态规划法了. 记录 ...

  2. NAS配置Time Machine,在D-Link DNS-320上的配置笔记

    今天打算把Time Machine备份的工作交给NAS,曾经是放在一块外置硬盘上的,尽管速度要比NAS快,可是每次插拔外接都有些麻烦.而NAS又具有实时在线.定时关机启动的功能.配合Time Mach ...

  3. angularjs1-3,$apply,$watch

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 0x13 链表与邻接表

    这东西我还是有点会玩的啊.. 邻值查找这东西不就是维护个前驱后继嘛.. #include<cstdio> #include<iostream> #include<cstr ...

  5. Ubuntu18.04修改Hostname

    1. 设置新的hostnamesudo hostnamectl set-hostname newNameHere 2. 修改配置文件使hostname可以保存编辑这个文件: /etc/cloud/cl ...

  6. 30.QT IDE编写

    mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTe ...

  7. maven 项目加载本地JAR

     将jar安装到本地的maven仓库 1.首先确定本地有maven环境. 2.安装本地jar 模板: mvn install:install-file -Dfile=<path-to-file& ...

  8. python中黏包现象

    #黏包:发送端发送数据,接收端不知道应如何去接收造成的一种数据混乱现象. #关于分包和黏包: #黏包:发送端发送两个字符串"hello"和"word",接收方却 ...

  9. python课程设计笔记(一)开发环境配置

    今天开始学python,一个月后交成果?还是希望自己不要浮躁,认真地去学,有所付出也不期望太大回报. 现在还是一脸懵逼的状态,看着教程一点点来吧= = 毕竟我是最棒的最发光的阳光彩虹小白马! 1. 去 ...

  10. mongodb配置文件详解

    logpath=/app/mongo/mongolog/mongo.log dbpath=/app/mongo/mongodata verbose = true #vvvv = true #此项会产生 ...