网络技术存储,数据库技术存储等等,今天我们不谈这些,我们今天讲下SharedPerferences的用法。
在windows下我们经常会看到ini文件,这些文件是保存软件程序的属性设置参数的,在Android中我们则经常用SharedPerferences来存储一些简单的属性参数,比如一些游戏中用户做的一些自定义设
置。
我们用一个例子来说明一下SharedPerferences的用法吧,看下面的代码:
Sharperferences sharperferences = this.getSharedPreferences("地址簿",Context.CONTEXT_IGNORE_SECURITY);
这句代码就是获取一个sharperferences对象,后面的两个参数的意思是:前面一个参数是你自定义的一个名字(就是你最后保存数据的文件的文件名),第二个参数是一个访问的安全模式,这里我们写
的是忽略安全性。获取了Sharperferences的对象后我们需要用这个对象来获取一个编辑器,这种存储方式存储文件不是直接用set之类的方法,而是用Editor来写入数据:
Editor editor = sharperferences.edit();
这一行代码就通过sharperferences对象获取了一个编辑器,然后通过这个编辑器就能写入数据了,Editor提供了一系列的putXxx方法,通过这些方法就可以将数据写入了,
editor.putInt("age",15);
这一行代码就是存储一个整型,一个参数是自己定义的一个名字,后面是你存储的数据;
在完成了上面那些步骤之后就可以进行最后一步了,
editor.commit();
这一句代码很容易忘记,造成存储数据失败;
整个存储的代码就是:
Sharperferences sharperferences = this.getSharedPreferences("地址簿",Context.CONTEXT_IGNORE_SECURITY);
Editor editor = sharperferences.edit();
editor.putInt("age",15);
editor.commit();
用SharedPerferences读取数据更简单,
Sharperferences sharperferences = this.getSharedPreferences("地址簿",Context.CONTEXT_IGNORE_SECURITY);
sharedPreferences.getInt("age",1);第一个参数是你要获取的数据定义的名字,后面的参数是当没有这个数据的时候设置的默认值。
Service获得Activity的数据:
1、在startService或者bindService的时候,通过在Intent中加入bundle来给service传递数据;
2、bindService的时候,在ServiceConnection的onServiceConnected(ComponentName name,IBinder service)方法中,通过IBinder中的Setter方法来给Service传递数据,也可以直接将Activity的引用传递给Service,这样Service就可以操作Activity中数据和方法了。
3、通过SharedPerferences共享存储数据;
4、通过sqlite数据库存储和获取数据,可以实现数据共享;
5、其他数据方法,如Files等,具体内容看文档的Dev guide->data storage部分吧。
Activity获得Service的数据:
1、同上通过sharedPerferences,sqlite,files等共享数据;
2、bindService的时候,在ServiceConnection的onServiceConnected(ComponentName name,IBinder service)方法中,通过IBinder可以访问Service的方法和变量,具体: a. 在自定义的IBinder中通过getter方法,返回Service中的变量,在赋给Activity中的的变量或者引用。 b. 在自定义的IBinder中的方法,执行Service中的操作; c. 在自定义的IBinder中通过方法返回Service的引用,赋给Activity中Service引用,这样Activity就可以对Service进行操作了。