Android基础之本地广播及文件存储和SharedPreference存储
来源:互联网 发布:ubuntu u盘系统 编辑:程序博客网 时间:2024/05/01 01:33
昨晚有没睡好,原因还是没有找到,今天晚上的心情不是很美丽,原因还是怪自己多嘴,以后一定少说,一定少说,一定少说!!!
不过也有令人高兴的事情,我的粉丝部长终于寻得一人,放下过去,祝福他们,但是自己什么时候才能放下呢,谁知道的,时间或
许会告诉我答案吧!好了,话不多说,开始说学习!
今天主要是学习了本地广播的发送,完成了广播学习阶段的实践,即实现强制下线功能,还进行安卓的数据持久存储技术。
一、本地广播的发送
本地广播是为了解决广播的安全性问题而引入的,本地广播使能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本
应用程序发出的广播,这样安全性问题便迎刃而解了。其实现主要是借助于LocalBroadcastManager来对广播进行管理,并提供了
发送广播和接收广播的方法。
public class MainActivity extends ActionBarActivity {
private IntentFilter intentFilter;
private LocalReceiver localReceiver;
private LocalBroadcastManager localBroadcastManager;
private NetworkChangeReceiver networkChangeRecive;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//获取一个本地广播的实例
localBroadcastManager=LocalBroadcastManager.getInstance(this);
Button button=(Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v)
//发送本地广播的实例
Intent intent=new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
}
});
//动态注册本地广播
intentFilter =new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
localReceiver=new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter);
}
public void onDestroy()
{
super.onDestroy();
unregisterReceiver(networkChangeRecive);
}
class LocalReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Received local broadcast", Toast.LENGTH_SHORT).show();
}
}
}
注意:本地广播无法通过静态注册来接收。
二、广播最佳实践------实现强制下线功能
耀完成该这个项目,首先要建立两个活动,即登录活动和发送强制下线通知的活动
并且要实现两个活动之间的切换,有登陆活动作为主活动,当用户密码与用户名输入正确之后
则将活动切换,发送广播后,杀死所有活动,并重新启动登陆活动。
注意:活动管理器的使用
在广播中活动切换的注意事项和弹出与系统相关的对话框的处理。
三、数据的永久存储技术
数据的永久存储方式可以分为三种:
1.文件存储:适用于存储一些简单的文本数据和二进制数据
2.SharedPreference存储:使用键值对来对文件进行存储,支持多种不同数据类型的存储
3.SQLite数据库存储:适用于较复杂的数据结构,大量数据的存储
1>文件存储的实现主要是依靠Context类提供的openFileOutput()方法,并借助Java数据流的知识就可以将数据存入指定的文件夹中。
public void save(String inputText)
{
FileOutputStream out=null;
BufferedWriter writer=null;
//其中第一个参数是文件名,第二个参数是文件的操作模式
try {
out=openFileOutput("data", Context.MODE_PRIVATE);
writer=new BufferedWriter(new OutputStreamWriter(out));
try {
writer.write(inputText);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(writer!=null)
{
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2>文件中数据的读取:借助于openFileInput再借助java数据流就可以读出数据了。
public String load()
{
FileInputStream in=null;
BufferedReader reader=null;
StringBuffer content=new StringBuffer();
try {
in=openFileInput("data");
reader=new BufferedReader(new InputStreamReader(in));
String line="";
try {
while((line=reader.readLine())!=null)
{
content.append(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(reader!=null)
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return content.toString();
}
切记:最后不要忘记关闭数据流
3>SharedPreferences存储
若想要使用该方法进行存储,则首先应该获取SharedPreferences对象,最常使用的是Context类的getSharedPreferences()方法
可以分三步实现文件的存储
1.调用SharedPrefernces对象的edit()方法来获取一个SharedPreferences.Editor的对象。
2.向获取的对象中添加数据。
3.调用commit()将数据进行提交。
saveData.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
SharedPreferences.Editor editor = getSharedPreferences("data",
MODE_PRIVATE).edit();
editor.putString("name", "xxx");
editor.putInt("age", 21);
editor.putBoolean("married", false);
editor.commit();
}
4>SharedPrefernces读取数据
使用SharedPrefernces对象提供的get方法
SharedPreferences pref=getSharedPreferences("data",MODE_PRIVATE);
String name=pref.getString("name", "");
int age=pref.getInt("age",0);
boolean married=pref.getBoolean("married",false);
Log.d("MainActivity", "name is "+name);
Log.d("MainActivity", "age is "+age);
Log.d("MainActivity", "married is "+married);
由于数据库存储技术还未全部实践完毕,所以相关内容明天整理。
下面说一下今天在运行程序时出现的问题:
1.无法打开手机的data文件查看文件存储和SharedPreferences存储生成的文件,解决方法:
将手机进行root,root之后下载RE管理器,打开后修改长按data以及data之下的文件或者文件夹选择修改权限即可,
将所有的权限都打勾,再去DDMS下就可以打开了
2.无法查看SQLite生成的数据库文件,主要是由于手机没有sqlite文件,这样的话可以将文件导入到本地,如果权限不够,参照1
来解决,在下载一个pc版本的sqlite文件查看器就可以,推荐SQlite Expert这样就可以解决问题了,还不用去配置环境之类的,简单粗暴
今天到此结束,还是希望今晚不要失眠,明天 天气转暖,晨练差不多得提上日程了,晚安,好梦,明天加油!
寄语:你说的话比你沉默要有意义,聊天也要这样,总而言之一句话,少说多做!!!
- Android基础之本地广播及文件存储和SharedPreference存储
- Android本地数据存储之Sharedpreference
- Android基础之数据存储SharedPreference和SQLite
- Android文件存储--SharedPreference
- 文件存储之SharedPreference存储
- android数据存储之文件方式和SharedPreference
- Android:数据存储之SharedPreference & 文件
- Android中的文件存储和sharedpreference
- 16读书笔记之文件存储和SharedPreference存储
- Android 数据存储之 SharedPreference
- Android 四大存储之 SharedPreference
- android 数据存储之 SharedPreference
- Android 数据存储之SharedPreference
- android存储方式之sharedpreference
- Android数据存储之SharedPreference
- Android之SharedPreference轻量级存储
- Android数据存储之SharedPreference
- Android存储方式之SharedPreference
- entity resolution
- 通过shell脚本来搭建python开发环境
- 对Java事物的理解
- iOS学习笔记-iOS中的类方法和实例方法
- [SGU 532]Building Foundation[几何]
- Android基础之本地广播及文件存储和SharedPreference存储
- UISearchController VS UISearchBar and UISearchDisplayController
- FAT32与NTFS区别
- HDU-1443 Joseph
- 3.Git远程仓库添加及克隆
- 模板的实例化和具体化
- 2015 Asia - Jakarta D - An ICPC Problem without Statement
- 1025. PAT Ranking (25)
- 知乎答案怎样学caffe