前言: 程序中处理的大部分问题都与数据有关,读取数据显示在UI上,读取的数据可以是本地的,也可以是网络的。保存用户数据到存储空间,可以是本地的数据库,文件等,也可以是保存到网络服务器。...总之大部分的程序都是在和数据打交道。Android中数据保存比较方便灵活,今天就按照官网说说数据保存。...大多数Android应用程序都需要存储数据,在Android生命周期方法onPause中,你可以保存用户在程序中的进度数据,在用户再次进入程序时进行读取恢复。...下面就给大家介绍一下在Android中数据是如何保存的。 key-value键值集合保存数据: 如果你有一些相对较少的键值数据集需要保存,那么SharedPreferences应该能够满足你。...google给出的建议是尽量不要用这种机制来进行数据共享传递,可以用其他方法来代替这种机制,比如使用ContentProvider,BroadcastReceiver或者Service。
采用xml文件形式存储在/data/data/包名/shared_prefs/下 优点在于: 轻量级,以键值对的方式进行存储,使用方便,易于理解 程序卸载后会也会一并被清除,不会残留信息 缺点在于: 不支持跨多个进程使用.../MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写) 2.2 通过Activity 类中的...getPreferences()方法 public SharedPreferences getPreferences(int mode); //mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问...文件支持所有人可写) //生成的配置文件名字会默认将当前活动的类名作为文件名.比如在MainActivity类下使用的,则会生成MAinActivity.xml 2.3 通过PreferenceManager中的静态...info1.xml: 通过MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);实现的 MainActivity.xml: 通过MainActivity.this.getPreferences
SharedPreferences介绍 在Android开发中,经常需要将少量简单类型数据保存在本地,如:用户设置。...当第一次获取数据后,数据会被加载到一个缓存的Map中,之后的读取都会非常快。...Tips tip 1 这里的用到的: getSharedPreferences (String name, int mode) getPreferences (int mode) MODE_PRIVATE...都是在Acitivty中执行的。...若不在Activity中,请使用 context.getSharedPreferences (String name, int mode) context.getPreferences (int mode
SharedPreferences操作模式 MODE_PRIVATE:默认的操作模式,同名文件内容会被覆盖。 MODE_APPEND:则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。...初始化SharedPreferences Activity类中的getPreferences(mode)方法 mode:指定操作模式 默认以当前类的类名作为前缀命名文件 Context类中的getSharedPreferences...editor.apply(); //编译处理,返回Boolean editor.commit(); 注:apply是将修改数据原子提交到内存,而后异步真正提交到硬件磁盘,而commit是同步的提交到硬件磁盘,因此,在多个并发的提交...commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。...//XML文件的形式储存 //设置本程序的私有访问 sharedPreferences=getSharedPreferences("userInfo",MODE_PRIVATE);
Activity 类中的 getPreferences()方法 public SharedPreferences getPreferences(int mode) { return...getSharedPreferences()方法,此方法传入的两个参数: 第一个参数用于指定 SharedPreferences 文件的名称,如果 指 定 的 文 件 不 存 在 则 会 创 建 一...个 ,SharedPreferences 文 件 都 是 存 放 在/data/data/"package name"/shared_prefs/目录下的。...第二个参数用于指定操作模式,就用MODE_PRIVATE吧,其它方法都过期了(哈哈,仅供参考) 第二步:得到 SharedPreferences.Editor 对象,进行写入操作。...SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE); String name = pref.getString("name
广播接收者,broadcast receiver,安卓系统在使用时会产生很多的事件,比如:短信到来,电量低,拨打电话等等 界面布局,线性布局,EditText指定为电话号码,设置属性android:inputType...=”phone” 获取SharedPreference对象,调用getSharedPreference(“config”,MODE_PRIVATE)方法 获取Editor对象,调用sp对象的edit()...value)方法,存入数据 调用Editor对象的commit()方法,提交 调用sp对象的getString(name,defValue)方法,获取到存入的数据 新建一个类OutRecevier继承 BroadcastReceiver...在清单文件中进行配置 添加节点,设置名称属性android:name=”.OutReceiver” 设置意图过滤器添加节点 设置过滤节点,添加动作<...(EditText) findViewById(R.id.et_ipnum); SharedPreferences sp=getSharedPreferences("config", MODE_PRIVATE
Android中主要提供了三种方法用于得到 SharedPreferences 对象。 1....MODE_PRIVATE 是默认的操作模式,和直接传入 0 效果是相同的。 ...Activity 类中的 getPreferences()方法: 这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为...使用Preference来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在android.content...editor.commit(); 2)读取数据: SharedPreferences sharedPreferences= getSharedPreferences("data", Context .MODE_PRIVATE
持久化技术 文件存储、SharedPreference、数据库存储 文件存储 将数据存储到文件中 Context类提供了一个openFileOutput()方法,将数据存到指定文件中。...MODE_PRIVATE:表示当指定相同文件名的时候,所写入的内容覆盖原文件。 MPDE_APPEND:追加。...inputText) } } catch (e: IOException) { e.printStackTrace() } } 这里使用了一个use函数,他保证在Lambda...2.指定操作模式,目前只有默认的MODE_PRIVATE模式可选,表示只有当前的程序可以对这个SharedPreferences文件进行读写。...2.Activity类中的getPreferences()方法 只接收一个操作参数,因为这个方法会自动将当前的Activity类名座位SharedPreferences的文件名。
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读; Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件; getPreferences...mContextSp = this.getSharedPreferences( "testContextSp", Context.MODE_PRIVATE ); mActivitySp = this.getPreferences...提交 editor.commit(); 读取数据 SharedPreferences sharedPreferences= getSharedPreferences("data", Context .MODE_PRIVATE...editor.remove("name"); editor.commit(); 清空数据 editor.clear(); editor.commit(); commit和apply区别 apply函数立即更改内存中的...由于提供了异步落盘的 apply 机制,在崩溃或者其它一些异常情况可能会导致数据丢失。
info.txt"); 写sd卡需要权限 读sd卡,在4.0...卡以字节为单位的剩余容量 availableBlocks * blockSize 存储设备会被分为若干个区块,每个区块有固定的大小 区块大小 * 区块数量 等于 存储设备的总大小 Linux文件的访问权限 在Android...MODE_PRIVATE仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。...Activity类中的 getPreferences()方法 这个方法和 Context中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为...editor.putBoolean("married", false);editor.commit(); 用SharedPreference存储账号密码 往SharedPreference里写数据,另一种写法 /路径在data
text, 时间).show(); setDuration();//设置时间 setGravity();//位置 获取: 添加toast.getView(); imageView添加到toast中,...MainActivity.this); SharedPreferences sharedPreferences = getSharedPreferences("sharedPreferences", MODE_PRIVATE...); editor.putXXX(); editor.commit(); 用户名和密码的存储 sharedPreferences = getSharedPreferences("UserInfo", MODE_PRIVATE...SQLiteDatabase SQLiteOpenHelper SQLiteDatabase db = openOrCreateDatabase("table.db", MODE_PRIVATE, null...public int delete(Uri uri,String selection, String[] selectionArgs){ } } Uri 通用资源标志符 Broadcast广播 BroadcastReceiver
在应用程序结束后,数据仍旧会保存。...对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象 2、getPreferences(): 如果activity仅需要一个共享文件,则可以使用该方法...()等方法增加相应类型的值 3、使用commit()方法提交新的值 从SharedPreferences类中读取值时,主要使用该类中定义的getXXX()方法。...SharedPreferences存储的数据 ,要加上下面这行代码,在同一activity种则不需要 49 //SharedPreferences sp = getSharedPreferences...("mrsoft", MODE_PRIVATE); 50 String get_name = sp.getString("username","0"); 51
android:name=”xxx” 添加意图过滤器节点 添加动作节点,设置监听动作名称android.intent.action.BOOT_COMPLETED 在BootCompleteReceiver...perission.RECEIVE_BOOT_COMPLETED BootCompleteReceiver.java package com.qingguow.mobilesafe.receiver; import android.content.BroadcastReceiver...android.telephony.TelephonyManager; import android.widget.Toast; public class BootCompleteReceiver extends BroadcastReceiver...siv_sim = (SettingItemView) findViewById(R.id.siv_sim); sp = getSharedPreferences("config", MODE_PRIVATE
NameError 在python中,如果引用的变量未定义,则会报告NameError: name '变量名' is not defined。 如下代码抛出了一个异常: !...提示: 一般来说,在python中,需要保证变量的定义在使用的前面。...IndexError 在python中,如果list、tuple中的元素被引用的索引值超过了元素的个数,则会报告IndexError: list index out of range。...KeyError 在python中,如果dict中的key不存在,则会报告KeyError: 'key'。 如下代码抛出了一个异常: !...原因: dict中不存在address这个key。 TypeError 在python中,如果一个对象不是内置对象的实例,则会报告TypeError。 如下代码抛出了一个异常: !
Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy()方法,服务销毁的时候回调 把上一节的代码拿到这个地方来 得到用户移动后的最后一次的位置,保存到SP中...把标准的转成中国的得到新的PointDouble对象,参数:PointDouble对象,x , y 获取到经度 PonitDouble对象的y 获取到纬度 PonitDouble对象的x 把位置数据保存到SP中...接收指令发送位置短信 启动服务,在接收短信的地方,获取到Intent对象,调用Context对象的startService()方法 获取到SP中保存的位置信息 发送短信,SmsManager.getDefault...Override public void onCreate() { super.onCreate(); sp=getSharedPreferences("config", MODE_PRIVATE...} } } SmsReceiver.java package com.qingguow.mobilesafe.receiver; import android.content.BroadcastReceiver
程序的终归目的还是操作数据来达到实现一些特定功能,在Android中,我们可以通过操作文件或者使用SharedPreferences还有数据库来保存一些数据。...首先来看一下Android文件的读写: 假设我们现在有这么一个需求:一个Activity中有一个EditText,在每次这个程序启动的时候我们要恢复用户上一次在EditText中输入的数据。...主要是一些Java中的文件操作,如果不熟悉的话可以去网上找一些教程。在 onDestroy 方法中调用 saveText 来储存 EditText 中的数据。...,在 onCreate 方法中我们进行恢复 EditText 中的数据。...2、Activity类中的getPreferences方法,此方法接受一个参数:操作模式(MODE_PRIVATE),储存的文件名为当前Activity对象的类名 3、PreferenceManager
在Android系统中提供了多张存储技术,这些存储技术可以讲数据保存在各种存储介质上。...这里简单说一下: Type Commens MODE_PRIVATE 默认模式,在创建的文件只能该应用能够使用(或所有的应用程序共享同一个用户标识号)。...另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。...* applications should use more formal mechanism for interactions * such as ContentProvider, BroadcastReceiver...在PreferenceActivity中,所有的修改都会自动更新该XML文件,不需要我们手动去设置大量的监听。
Normal broadcasts(正常广播),用 Context.sendBroadcast()发送是完全异步的,它们都运行在一个未定义的顺序,通常是在同一时间。...需在onStart()中调用registerReceiver()进行注册和在onStop中调用unregisterReceiver()释放服务 private MusicReceiver receiver...里面一目了然 动态注册方式,隐藏在代码中,比较难发现;需要特别注意的是,在退出程序前要记得调用Context.unregisterReceiver()方法。...对于耗时的操作,应该在startService中来完成。因为当得到其他异步操作所返回的结果时,BroadcastReceiver 可能已经无效了。...中的receiver和动态注册在PlayMusicRecevicer注释的代码部分,两者选择一种即可 代码下载 参考推荐: Android Service生命周期及用法 Android之BroadcastReceiver
Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。...开发者可以将用户首选项持久化文件的内容加载到Preferences实例,每个文件唯一对应到一个Preferences实例,系统会通过静态容器将该实例存储在内存中,直到主动从内存中移除该实例或者删除该文件...约束限制:首选项无法保证进程并发安全,会有文件损坏和数据丢失的风险,不支持在多进程场景下使用。Key键为string类型,要求非空且长度不超过1024个字节。...当存储的数据中包含非UTF-8格式的字符串时,请使用Uint8Array类型存储,否则会造成持久化文件出现格式错误造成文件损坏。...内存会随着存储数据量的增大而增大,所以存储的数据量应该是轻量级的,建议存储的数据不超过50MB,当存储的数据较大时,在使用同步接口创建Preferences对象和持久化数据时会变成耗时操作,不建议在主线程中使用
保存在内存中的数据是瞬时数据,保存在手机设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行切换。...该方法接收两个参数: 第一个参数是文件名,在文件创建的时候使用的就是这个文件名,注意,这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data//files...第二个参数是文件的操作模式,主要有两种可选模式,MODE_PRIVATE和MODE_APPEND,其中MODE_PRIVATE是默认操作模式,表示当指定同样文件名的时候,所写入的内容会覆盖原文件中的内容...第二个参数指定操作模式,主要有两种模式可选:MODE_PRIVATE和MODE_MULTI_PROCESS,MODE_PRIVATE仍然是默认选项,表示只有当前应用程序可以对这个SharedPreference...Activity类中的getPreferences(int mode)方法:这个方法和第一个很相似,它只接收一个参数,就是操作模式。