• Activity小技巧


    随时随地退出程序

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

     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);
    }
  • 相关阅读:
    4天精通arcgis
    性能优化紧急回顾笔记
    linux下oracle导入dmp文件
    centos虚拟机复制后网络重启出错解决
    redhat ent 6.5 virtualbox虚拟机通过桥接方式配置主机-虚拟机的局域网
    SVN的搭建及使用(三)用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突,重新设置用户名和密码等
    SVN 的搭建及使用(二)VisualSVN Server建立版本库,以及VisualSVN和TortoiseSVN的使用
    SVN 的搭建及使用(一)下载和搭建SVN服务器
    Visual Studio 2008常见问题
    .net 学习路线感想(转)
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6381339.html
Copyright © 2020-2023  润新知