• SharedPreferences 存储数组+双击退出


    public static void saveApkEnalbleArray(Context context,boolean[] booleanArray) {
    SharedPreferences prefs = context.getSharedPreferences(APK_ENABLE_ARRAY, Context.MODE_PRIVATE);
    JSONArray jsonArray = new JSONArray();
    for (boolean b : booleanArray) {
    jsonArray.put(b);
    }
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString(APK_ENABLE_ARRAY,jsonArray.toString());
    editor.commit();
    }
    public static boolean[] getApkEnableArray(Context context,int arrayLength)
    {
    SharedPreferences prefs = context.getSharedPreferences(APK_ENABLE_ARRAY, Context.MODE_PRIVATE);
    boolean[] resArray=new boolean[arrayLength];
    Arrays.fill(resArray, true);
    try {
    JSONArray jsonArray = new JSONArray(prefs.getString(APK_ENABLE_ARRAY, "[]"));
    for (int i = 0; i < jsonArray.length(); i++) {
    resArray[i] = jsonArray.getBoolean(i);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }

    return resArray;
    }

    ===========================================

    在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。

    第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。
    在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    package com.gaolei.exitdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.KeyEvent;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        // 定义一个变量,来标识是否退出
        private static boolean isExit = false;
    
        Handler mHandler = new Handler() {
    
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                isExit = false;
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                exit();
                return false;
            }
            return super.onKeyDown(keyCode, event);
        }
    
        private void exit() {
            if (!isExit) {
                isExit = true;
                Toast.makeText(getApplicationContext(), "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                // 利用handler延迟发送更改状态信息
                mHandler.sendEmptyMessageDelayed(0, 2000);
            } else {
                finish();
                System.exit(0);
            }
        }
    
    }
    

    第二种实现方式,通过记录按键时间计算时间差实现:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    package com.gaolei.exitdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private long exitTime = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                exit();
                return false;
            }
            return super.onKeyDown(keyCode, event);
        }
    
        public void exit() {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
        }
    
    }
    

    device-2013-04-02-233317.png

    声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

    原文作者: gaolei_xj

    原文地址: http://my.eoe.cn/leigo/archive/2146.html

  • 相关阅读:
    echarts实现地图
    微信开发之自定义菜单 + php
    微信开发之消息模板推送 + php
    微信开发之JS-SDK + php 实现分享朋友/朋友圈,QQ/QQ空间
    微信开发之网页授权 PHP
    微信开发之生成二维码,扫码关注公众号PHP
    微信开发之JS-SDK + PHP实现录音、上传、语音识别
    微信公众号开发启用服务器配置提交token验证失败 php
    带上数据表,分析一下拼团活动该如何设计
    ajax实现异步加载ECharts图表数据
  • 原文地址:https://www.cnblogs.com/manmanlu/p/4317704.html
Copyright © 2020-2023  润新知