前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单快捷的退出APP应用

简单快捷的退出APP应用

作者头像
AlicFeng
发布2018-06-08 11:52:03
9540
发布2018-06-08 11:52:03
举报

看到很多的教程包括官方的api的简单描述,双击返回键退出应用程序还用到比较传统的计时方式,用起来很累,于是我就类了-简单的类了。

主要业务逻辑就是利用Handler.sendEmptyMessageDelayed()延迟发送消息

Source - Code:

packagecom.samego.alic.demo01uicontrols;

importandroid.app.Activity;

importandroid.app.ActivityManager;

importandroid.content.Context;

importjava.util.LinkedList;

/**

*管理所有的activity类的集合

* Created by alic on 16-3-26.

*/

public class ActivityCollector {

//承载activity的容器

public static LinkedList<Activity> activities=new LinkedList<Activity>();

//定义一个变量,来标识是否退出

public static booleanisExit=false;

/**

*向容器里面添加activity

*@paramactivity

*/

public static void addActivity(Activity activity) {

activities.add(activity);

}

/**

*向容器里面删除activity

*@paramactivity

*/

public static void removeActivity(Activity activity) {

activities.remove(activity);

}

/**

*遍历finish所有的activity

*/

public static void finishAll() {

for(Activity activity : activities) {

if(!activity.isFinishing()) {

activity.finish();

}

}

}

/**

*连后台任务都杀死 杀得一干二净

*退出应用程序

*完全退出App的方法

*/

public static void AppExit(Context context) {

try{

ActivityCollector.finishAll();

ActivityManager activityMgr = (ActivityManager) context

.getSystemService(Context.ACTIVITY_SERVICE);

activityMgr.killBackgroundProcesses(context.getPackageName());

System.exit(0);

}catch(Exception ignored) {

}

}

}


就上面的code和我们的需求最一个简单的说明,基本上每一个app打开使用后都有很多的activity界面,

于是上面的类就是用了LinkedList<LinkedList>用来承载每一个activity,然后利用它遍历kill所有的activity

Using-method:

Step-one:

在onCreate()方法体里面补充

ActivityCollector.addActivity(this);

Stept-two

处理双击退出的业务逻辑,这一模块那就直接看代码【的注释】

public booleanonKeyDown(intkeyCode,KeyEvent event) {

//监听返回键点击处理事件

if(keyCode == KeyEvent.KEYCODE_BACK) {

if(!ActivityCollector.isExit) {

ActivityCollector.isExit=true;

Toast.makeText(getApplicationContext(),"再按一次退出程序",Toast.LENGTH_SHORT).show();

//利用handler延迟发送更改状态信息  第一个参数what是信息来源的判断what

myHandler.sendEmptyMessageDelayed(1,2000);

}else{

ActivityCollector.AppExit(this);

}

return false;

}

return super.onKeyDown(keyCode,event);

}

//该处你懂得优化处理

Handler myHandler=new Handler() {

@Override

public voidhandleMessage(Message msg) {

super.handleMessage(msg);

switch(msg.what){

case 0:

ActivityCollector.isExit=false;

break;

}

}

};


已经完事啦,But~But~But~吐槽一下传统的时间处理的方式吧--看!

private long exitTime=0;

public boolean onKeyDown(int keyCode,KeyEvent event){

if(keyCode==KeyEvent.KEYCODE_BACK){

if((System.currentTimeMillis()-exitTime)>2000){

Toast.makeText(getApplicationContext(),"再按一次退出程序",Toast.LENGTH_SHORT).show();

exitTime=System.currentTimeMillis();

}else{

exit();

}

return false;

}

return super.onKeyDown(keyCode,event);

}

真的完事啦~~


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.03.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Source - Code:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档