XBlog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

RemoteViews的内部机制

发表于 2017-07-25 | 分类于 Android | 阅读次数

RemoteView

**RemoteViews的作用是在其他进程中显示并更新View的界面,主要用于通知栏和桌面小部件。
RemoteViews并不能支持所有的View类型,它所支持的所有类型如下所示:

Layout:FrameLayout、LinearLayout、RelativeLayout、GridLayout

View:AnalogClock、Button、Chronometer、IamgeView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView、AdapterViewFlipper、ViewStub

RemoteViews由于跨进程,没有提供findViewById方法,而是提供了一系列set方法(大部分set方法是通过反射实现的)来完成,部分set方法如下所示:

阅读全文 »

源码分析多进程下的SharedPreferences

发表于 2017-07-25 | 分类于 Android | 阅读次数

多进程下的SharedPreferences情况

先启动主进程并获取SharedPreferences对象,然后对值进行修改,然后启动其他进程并获取SharedPreferences对象,能取得修改后的值,但此时如果再对此值进行修改,均不能对其他进程产生作用。
总结下来就是,其他进程在启动时获取到的SharedPreferences的值只能是这个进程启动前这个值的最后值,即在进程启动后对值的修改只对当前进程有效,须等到进程重启或者app重启才能与其他进程进行“同步”。
这里即使把获取SharedPreferences对象的模式改为MODE_MULTI_PROCESS,也仅仅是在Android3.0以下才有效,在Android3.0以上也是一样不行的。

那么为什么会这样子呢,笔者带大家从源码的角度来分析一下,我们来看一下关于SharedPreferences的源码。

阅读全文 »

设计模式之装饰者模式

发表于 2017-07-24 | 分类于 设计模式 | 阅读次数

概述

装饰者模式,动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更加有弹性的替代方案

结构说明

  • Component抽象组件,是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。(注:在装饰模式中,必然有一个最基本、最核心、最原始的接口或者抽象类充当Component抽象组件)
  • ConcreteComponent具体组件,是最核心、最原始、最基本的接口或抽象类的实现,我们需要装饰的就是它。
  • Decorator装饰角色,一般是一个抽象类,实现接口或者抽象方法,它的属性里必然有一个private变量引用指向Component抽象组件。(功能多的话可以独立出个抽象类来,也可以直接ConcreteDecorator)
  • ConcreteDecorator具体装饰角色,,我们要把我们最核心的、最原始的、最基本的东西装饰成其它东西。
阅读全文 »
1…34
XuJiaoJie

XuJiaoJie

Never stop, search for better yourself

33 日志
7 分类
7 标签
Github CSDN
© 2018 XuJiaoJie
由 Hexo 强力驱动
主题 - NexT.Pisces