Activity小技巧

安卓应用退出策略
本文介绍了一种通过ActivityCollector管理所有活动并实现应用整体退出的方法,包括如何创建和使用ActivityCollector类,以及两种双击退出程序的实现方式。

随时随地退出程序

  新建一个结合类对所有活动进行管理。

 1 public class ActivityCollector{
 2     public static List<Activity> activities = new ArrayList<>();
 3     public static void addActivity(Activity activity){
 4         activities.add(activity);
 5     }
 6     public static void removeActivity(Acitivity activity){
 7         activities.remove(acitivity);
 8     }
 9     public static void finishAll(){
10         for(Activity activity: activities){
11             if(!activity.isFinishing()){
12                 activity.finish();
13             }
14         }
15     }
16 }

 

启动活动技巧

  在SecondActivity中添加一个actionStrat()

1 public class SecondActivity extends BaseActivity{
2     public static void actionStart(Context context,String data1,String data2){
3         Intent intent = new Intent(context,SecondActivity.class);
4         intent.putExtra("param1","data1");
5         intent.putExtra("param2","data2");
6         context.startActivity(intent);
7     }
8 ......
9 }

  启动SecondActivity

public void onClick(View v){
    SecondActivity.actionStart(FirstAcitivity.this,"data1","data2");
}

   杀死整个App

/** 
 * 退出应用程序 
 */  
public 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) {}  
}  

  双击退出程序两个方法:

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

// 定义一个变量,来标识是否退出
private static boolean isExit = false;
Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        isExit = false;
    }
};

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (!isExit) {
            isExit = true;
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            // 利用handler延迟发送更改状态信息
            mHandler.sendEmptyMessageDelayed(0, 2000);
        } else {
            exit(this);
        }
        return false;
    }
return super.onKeyDown(keyCode, event);}

  2)保存点击时间:

/保存点击的时间
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);
}

 

转载于:https://www.cnblogs.com/yl-saber/p/6381339.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值