android四大组件分别为activity、service、content provider、broadcast receiver。
+++++++++++++++++++++++++++++++++++++==========================
1获取SharedPreferences的实例对象的方法**
可以分为三部曲:
获取sharePreferences对象,并通过sharePreferences.edit()来获取Editor类的对象
通过editor类的键值对方式存储数据,如putBoolean(),putString(),putInt()等
通过editor.commit()方法
三部曲:
1.获取sharePreferences对象,并通过sharePreferences.edit()来获取Editor类的对象,可以比作一支笔;
2.通过editor类的键值对方式存储数据,如putBoolean(),putString(),putInt()等,这可以比作要写什么内容到纸张上;
3.通过editor.commit()方法把数据提交,完成数据的存储
现知道了sharePreferences的存储步骤,那么有几种方法来获取sharePreferences对象呢?目前可以通过以下的三种来获取:
第一:通过Context类的getSharedPreferences方法获取,传入的参数分别是文件名,Context.常量(文件的存储模式)
MODE_PRIVATE :表示私有方式存储,其他的应用无法访问;
MODE_APPEND:追加方式存储
MODE_WORLD_READABLE:表示当前文件可以被其他的应用读取,但是不能写入
MODE_WORLD_WRITERABLE:表示 当前文件可以被其他应用写入
第二:可以通过Activity类的getPreferences(Mode) 方法获取;
第三:可以通过PreferenceManager类的getDefaultSharedPreferences()来获取;
案例如下:
//一:通过Context去获取SharedPreferences对象
SharedPreferences sp = mContext.getSharedPreferences("文件名",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("boolean",false);
editor.putString("String", "str");
editor.commit();
//二:通过Activity 获取SharedPreferences对象
SharedPreferences sp2 = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor2 = sp2.edit();
editor2.putBoolean("boolean",false);
editor2.putString("String", "str");
editor2.commit();
//三:PreferenceManager
SharedPreferences sp3 = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor3 = sp3.edit();
editor3.putBoolean("boolean",false);
editor3.putString("String", "str");
editor3.commit();
原文链接:https://blog.csdn.net/qq_36714156/article/details/89302543
+++++++++++++++++++++======================
观察特定Uri的步骤如下:
1、 创建我们特定的ContentObserver派生类,必须重载父类构造方法,必须重载onChange()方法去处理回调后的功能实现
2、 利用context.getContentResolover()获得ContentResolove对象,接着调用registerContentObserver()方法去注册内容观察者
3、 由于ContentObserver的生命周期不同步于Activity和Service等,因此,在不需要时,需要手动的调用
unregisterContentObserver()去取消注册。
好了,基本讲解就介绍到这儿了。下面给出小DEMO的简单说明:
Demo中共有两个不同的ContentObserver派生类,如下:
1、用来观察系统是否改变了飞行模式状态,
PS: 大家可以去SDK中查看该类:android.provider.Settings.System。该类封装了对设置模块下所有值的存取,比如:
飞行模式状态、蓝牙状态、屏幕亮度值等,并且提供了相应的Uri。
2、观察系统的短信息数据发生了变化。当监听到短信数据发生变化时,查询所有已发送的短信并且显示出来。
短信的Uri共有一下几种:
content://sms/inbox 收件箱
content://smsnt 已发送
content://sms/draft 草稿
content://sms/outbox 发件箱 (正在发送的信息)
content://sms/failed 发送失败
content://sms/queued 待发送列表 (比如开启飞行模式后,该短信就在待发送列表里)
原文链接:https://blog.csdn.net/qinjuning/article/details/7047607
==++++=
广播接收者必须在清单文件中注册之后才能接收广播。(×)
解析:
广播接收者注册分为两种:常驻型(静态)和非常驻型(动态)。前者就是在清单文件中注册,如果此程序关闭,如果接收到其他程序的对应广播,可能也会自动开启(Android 4.0以上系统出于安全考虑不会这样了);而后者就是在代码里创建IntentFilter,set一下action,动态注册,在接收到消息后销毁,不再活跃,它依赖于注册广播组件的生命周期和unregisterReceiver()。
原文链接:https://blog.csdn.net/weixin_44677382/article/details/116406668
=====++++++++++++++++++++++++++++++++++++++++++++++++++=
服务通信的描述:
AIDL语言,即android interface definition language
AIDL语言语法很简单,语法跟Java接口很相似,但存在如下差异:
AIDL定义接口的源代码,必须以.aidl结尾
AIDL接口中用到的数据类型,除了基本类型,String,List,Map,CharSequence之外,其他类型全部都需要导包,即使他们在同一个包中也需要导入包。
原文链接:https://blog.csdn.net/a946898963/article/details/50788917