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);
}
} }

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

原文作者: gaolei_xj

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

SharedPreferences 存储数组+双击退出的更多相关文章

  1. Android SharedPreferences存储详解

    什么是SharedPreferences存储 一种轻量级的数据保存方式 类似于我们常用的ini文件,用来保存应用程序的一些属性设置.较简单的参数设置. 保存现场:保存用户所作的修改或者自定义参数设定, ...

  2. Android SharedPreferences存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SharedPreferences.html 一 概念 SharedPreferen ...

  3. ionic android双击退出应用和物理返回按钮隐藏键盘的实现

    angular.module('starter', ['ionic', 'route', 'config', 'global', 'commonJs', 'ngCordova']) .run(['$i ...

  4. Android应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

  5. Android入门(九)文件存储与SharedPreferences存储

    原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...

  6. Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  7. 使用sessionStorage、localStorage存储数组与对象(转)

    http://my.oschina.net/crazymus/blog/371757 使用sessionStorage.localStorage存储数组与对象 发表于3个月前(2015-01-26 1 ...

  8. 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)

    新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...

  9. 【Android】数据的应用-使用sharedpreferences存储数据

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

随机推荐

  1. laydate控件后台返回的时间前台格式化

    //功能:laydate控件后台返回的时间前台格式化 //参数:laydate控件值 function formatDate(strTime) { if ("" === strTi ...

  2. 转义字符 & sizeof & strlen

    在定义了数组大小时: sizeof是运算符,表示编译时分配的空间大小,即数组定义的大小,char t[20] = "sfa".sizeof: 20; strlen: 3.在未定义数 ...

  3. 人脸识别源代码Open cv

    #include <stdio.h> #include <string.h> #include "cv.h" #include "cvaux.h& ...

  4. 使用 HTML5 Geolocation 构建基于地理位置的 Web 应用学习网站分享

    HTML5 中的新功能 HTML5 是最新一代的 HTML 规范,是 W3C 与 WHATWG 合作的结果,目前仍外于开发中.自从上一代 HTML4,Web 世界已经发生了巨大的变化,HTML5 的到 ...

  5. perl学习之进程管理

    系统函数 == 最简单的系统调用  system "date"; # Perl会将 date 命令传递给unix的shell并获取返回值和error信息等   == 带有系统参数的 ...

  6. NSArray 排序

    先研究一种方法 NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:]; ; i < ; i++) { ; [arr ...

  7. solr DIH 设置定时索引

    1 web.xml中加入 web.xml所在目录 /opt/solr-7.7.1/server/solr-webapp/webapp/WEB-INF <listener> <list ...

  8. MIP启发式算法:爬山算法 (Hill climbing)

    本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 ...

  9. 【MySQL】可重复读模式下 unique key失效案例

    一 [背景]   今天上午文能提笔安天下,武能上马定乾坤的登博给团队出了一道题目,谁先复现问题,奖励星巴克一杯.激起了一群忙碌的屌丝DBA的极大热情.问题是这样滴,如下图登博提示了几个细节:   1. ...

  10. CEO的智力财富第12期-《股权激励》学习笔记

    卷首语---你现在走的第一步,都藏着你未来的样子 今天,又去参加天使岛举办的系列讲座之股权激励,由律大大律师事务所李刚律师主讲,走在路上,我就在想,我为什么要来参加这样的活动呢?我的本职工作和股权没有 ...