android分享的类型,Android学习指南之十八:共享参数类SharedPreferences的使用分享...

Android系统在数据存储和数据共享方面提供了多种方式,包括前面我们讲过的使用SQLite数据库的方式,本文将为大家讲解另一种共享数据和存储数据的方式-共享参数类SharedPreferences的使用。

一、SharedPreferences简介

SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中。下面我们用一个记录音乐播放进度的例子来学习SharedPreferences的使用。

二、SharedPreferences实例

1、建立一个新的项目Lesson19_HelloSharedPreferences,Activity名字叫MainHelloSharedPreferences.java。

2、建立一个MusicService.java的Service,代码如下:

Java代码

packageandroid.basic.lesson19;

importandroid.app.Service;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.SharedPreferences;

importandroid.media.MediaPlayer;

importandroid.os.IBinder;

importandroid.widget.Toast;

publicclassMusicServiceextendsService {

//定义MediaPlayer播放器变量

MediaPlayer mPlayer =newMediaPlayer();

@Override

publicvoidonCreate() {

Toast.makeText(getApplicationContext(),"Service onCreate()", Toast.LENGTH_LONG).show();

//创建播放器

mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.babayetu);

//设置自动循环

mPlayer.setLooping(true);

}

@Override

publicIBinder onBind(Intent intent) {

Toast.makeText(getApplicationContext(),"Service onBind()", Toast.LENGTH_LONG).show();

//获得SharedPreferences对象

SharedPreferences preferences =this.getSharedPreferences("MusicCurrentPosition",Context.MODE_WORLD_WRITEABLE);

//播放器跳转到上一次播放的进度

mPlayer.seekTo(preferences.getInt("CurrentPosition",0));

//开始播放

mPlayer.start();

returnnull;

}

@Override

publicbooleanonUnbind(Intent intent){

Toast.makeText(getApplicationContext(),"Service onUnbind()", Toast.LENGTH_LONG).show();

//获得SharedPreferences对象

SharedPreferences preferences =this.getSharedPreferences("MusicCurrentPosition",Context.MODE_WORLD_WRITEABLE);

Toast.makeText(getApplicationContext(),"CurrentPosition="+mPlayer.getCurrentPosition(), Toast.LENGTH_LONG).show();

//获得editor对象,写入一个整数到SharePreferences中,记住要用commit()提交,否则不会实现写入操作

preferences.edit().putInt("CurrentPosition",mPlayer.getCurrentPosition()).commit();

mPlayer.stop();

returnfalse;

}

}

3、更改AndroidManifest.xml内容如下:

XML/HTML代码

4、res/layout/mail.xml的内容如下:

XML/HTML代码

5、MainHelloSharedPreferences.java的内容如下:

Java代码

packageandroid.basic.lesson19;

importandroid.app.Activity;

importandroid.content.ComponentName;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.ServiceConnection;

importandroid.os.Bundle;

importandroid.os.IBinder;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.Toast;

publicclassMainHelloSharedPreferencesextendsActivity {

/** Called when the activity is first created. */

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//定义UI组件

Button b1 = (Button) findViewById(R.id.Button01);

Button b2 = (Button) findViewById(R.id.Button02);

//定义ServiceConnection对象

finalServiceConnection conn =newServiceConnection() {

@Override

publicvoidonServiceConnected(ComponentName name, IBinder service) {

}

@Override

publicvoidonServiceDisconnected(ComponentName name) {

}

};

//定义按钮的单击监听器

OnClickListener ocl =newOnClickListener() {

@Override

publicvoidonClick(View v) {

Intent intent =newIntent(MainHelloSharedPreferences.this,

android.basic.lesson19.MusicService.class);

switch(v.getId()) {

caseR.id.Button01:

Toast.makeText(getApplicationContext(),"Button01 onClick", Toast.LENGTH_LONG).show();

//绑定服务

bindService(intent,conn,Context.BIND_AUTO_CREATE);

break;

caseR.id.Button02:

Toast.makeText(getApplicationContext(),"Button02 onClick", Toast.LENGTH_LONG).show();

//取消绑定

unbindService(conn);

break;

}

}

};

//绑定单击监听器

b1.setOnClickListener(ocl);

b2.setOnClickListener(ocl);

}

}

6、运行程序,查看运行情况:

270f017a5d180a88ecbffa65b762ad09.png

270f017a5d180a88ecbffa65b762ad09.png

查看File Explorer,在/data/data/android.basic.lesson19/shared_prefs/目录下有一个MusicCurrentPosition.xml文件,点击右上角的按钮pull a file from the device,可以把这个xml文拷贝出来:

270f017a5d180a88ecbffa65b762ad09.png

7、查看MusicCurrentPosition.xml的内容,可以看到音乐播放进度的数据存贮在这个xml中:

XML/HTML代码

大家可以试着扩展下本实例,为Activity添加一个按钮,点击它实现的功能是取出SharedPreferences中的播放进度数据,显示在另一个文本框Textview02里。下面直接贴上最终的运行效果图,至于程序,大家可以试着自己写一下,更加深刻的理解Share,同一个进程中的不同组件是否都可以访问此共享的持久化数据?这一点是不是与Cookie有些类似?

270f017a5d180a88ecbffa65b762ad09.png

-上面就是Android学习指南之十八:共享参数类SharedPreferences的使用分享全部内容. 如果需要了解更多

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/adkf/492195.html

发表评论邮箱地址不会被公开。 必填项已用*标注

*昵称:

*邮箱:

网址:

记住昵称、邮箱和网址,下次评论免输入

提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值