android中程序的退出和关闭
2015-07-09 00:00
357 查看
摘要: 单进程的关闭和多线程的退出
在工程中,直接调用System.exit(0)函数就可以实现对工程的关闭。也可以使用退出对话框提醒的方式进行退出,代码如示:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
// 确认对话框
final AlertDialog isExit = new AlertDialog.Builder(this).create();
isExit.setMessage("你确定要退出?");
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case AlertDialog.BUTTON1:// "确认"按钮退出程序
NotificationManager notificationManager = (NotificationManager) ModeChooseActivity.this
.getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0);
System.exit(0);
break;
case AlertDialog.BUTTON2:// "取消"按钮取消对话框
sExit.cancel();
break;
default:
break;
}
}
};
// 注册监听
isExit.setButton("YES", listener);
isExit.setButton2("NO", listener);
// 显示对话框
isExit.show();
return false;
}
return false;
}
但是当工程中有多个activity时,finish只能实现单个活动的关闭。这时候需要将每个activity存放到一个活动栈中,每开启一个活动就进一次栈,然后设定在某一个活动中对这个栈进行整体的删除就好,代码如下:
public class kill extends Application {
//运用list来保存们每一个activity是关键
private List<Activity> mList = new LinkedList<Activity>();
//为了实现每次使用该类时不创建新的对象而创建的静态对象
private static kill instance;
//构造方法
private kill(){} //实例化一次
public synchronized static kill getInstance(){
if (null == instance) {
instance = new kill();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
//关闭每一个list内的activity
public void exit() {
try {
for (Activity activity:mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
//杀进程
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
在活动中使用kill.getInstance().addActivity(this);语句来将此活动添加到栈中,在需要关闭活动栈的activity中使用语句kill.getInstance().exit();来进行活动栈的整体删除和程序的关闭。
在工程中,直接调用System.exit(0)函数就可以实现对工程的关闭。也可以使用退出对话框提醒的方式进行退出,代码如示:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
// 确认对话框
final AlertDialog isExit = new AlertDialog.Builder(this).create();
isExit.setMessage("你确定要退出?");
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case AlertDialog.BUTTON1:// "确认"按钮退出程序
NotificationManager notificationManager = (NotificationManager) ModeChooseActivity.this
.getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0);
System.exit(0);
break;
case AlertDialog.BUTTON2:// "取消"按钮取消对话框
sExit.cancel();
break;
default:
break;
}
}
};
// 注册监听
isExit.setButton("YES", listener);
isExit.setButton2("NO", listener);
// 显示对话框
isExit.show();
return false;
}
return false;
}
但是当工程中有多个activity时,finish只能实现单个活动的关闭。这时候需要将每个activity存放到一个活动栈中,每开启一个活动就进一次栈,然后设定在某一个活动中对这个栈进行整体的删除就好,代码如下:
public class kill extends Application {
//运用list来保存们每一个activity是关键
private List<Activity> mList = new LinkedList<Activity>();
//为了实现每次使用该类时不创建新的对象而创建的静态对象
private static kill instance;
//构造方法
private kill(){} //实例化一次
public synchronized static kill getInstance(){
if (null == instance) {
instance = new kill();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
//关闭每一个list内的activity
public void exit() {
try {
for (Activity activity:mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
//杀进程
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
在活动中使用kill.getInstance().addActivity(this);语句来将此活动添加到栈中,在需要关闭活动栈的activity中使用语句kill.getInstance().exit();来进行活动栈的整体删除和程序的关闭。
相关文章推荐
- android中的surfaceview控件
- Robotium in Android Studio
- android XML布局大全
- Android开发者的Git&GitHub(二)
- Android根据uri获取图片的路径(4.4+)
- android入门学习-java面向对象基础
- Android入门(38)——第十五章 Android布局优化
- Android DiskLruCache完全解析
- Android-DrawerLayout介绍
- android 广播简介
- Android系列教程之五:Activity的生命周期
- Android中Task任务栈的四种模式
- Android关于手机数据读取联系人数据
- Xamarin.Android开发实践(十八)
- 解决Android Studio下Element layer-list must be declared问题
- Android odex文件反编译
- Xamarin.Android开发实践(十七)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- Xamarin.Android开发实践(十六)
- Xamarin.Android开发实践(十五)