
Android Persistence
文章平均质量分 75
fyfcauc
这个作者很懒,什么都没留下…
展开
-
【Android】SharedPreferences commit(同步)apply(异步)
From: http://blog.youkuaiyun.com/tuhuolong/article/details/20644501Unlike commit(), which writes its preferences out to persistent storage synchronously, apply() commits its changes to the in-memory S转载 2014-12-30 16:30:01 · 1049 阅读 · 0 评论 -
ActiveAndroid TableInfo TypeSerializer
TableInfo在构造时会传入一个Class<\? extends Model> type对象作为参数:调用type.getAnnotation(Table.class) 得到一个Table注解类,里面描述了该Model对应的DB的table的信息如果确实得到了一个Table注解对象,那么会将该对象的name/id保存在mTableName/mIdName中.如果没有得到对应的Table注解对原创 2016-01-30 15:47:45 · 793 阅读 · 0 评论 -
ActiveAndroid的建表跟踪
ActiveAndroid的建表跟踪: ActiveAndroid扩展过的ContentProvider在Application创建的时候就会被创建,从而回调到onCreate()函数.onCreate()中调用了ActiveAndroid.initialize(getConfiguration())ActiveAndroid的initialize(…)会进一步调用到Cache.initial原创 2015-10-26 13:14:22 · 855 阅读 · 0 评论 -
SharedPreferences源码笔记
SharedPreferencesImpl: SharedPreferences的真正实现.总体的设计思想是构造时直接从文件将信息IO读入内存, 在IO就绪前的getXXX()全部wait, 在IO结束以后notifyAll()放行.对于修改的提交提供了apply(异步)和commit(同步), 两者其实流程基本一致,都是根据当前的修改信息构造一个MemoryCommitResult来进行调度IO原创 2015-08-13 15:09:03 · 747 阅读 · 0 评论 -
SQLite 源码笔记(1)
SQLiteDatabaseSQLiteConnectionPoolSQLiteConnection -> execute() -> nativeExecute(mConnectionPtr, statement.mStatementPtr);/home/fyf/WORK/kitkat/mydroid/frameworks/base/core/jni/android_database_SQLi原创 2015-08-25 12:20:49 · 688 阅读 · 0 评论 -
Android Fragment 体系源码跟踪笔记(1)
FragmentManagerState implements Parcelable, 就是之前说的在save state时,用来保存FragmentManager本身state的容器,其内部的成员也都是各种信息的holder: FragmentState[] mActive;: 保存当前Active的Fragment的state.int[] mAdded: 保存已经被Add进去的Fragmen原创 2015-05-07 16:43:05 · 667 阅读 · 0 评论 -
Android Adapter 源码笔记(3)
SimpleAdapter extends BaseAdapter implements Filterable本质上和ArrayAdapter一样,只不过Data的数据结构更为复杂,支持的View layout也更为复杂.为了支持携带多元化类型的数据,mData在这里的数据结构变为了List<? extends Map<String, ?>>,每份Item都有一个Map<String, ?>对应,原创 2015-05-11 19:01:24 · 525 阅读 · 0 评论 -
Android Fragment 体系 源码追踪笔记(4)
FragmentState implements Parcelable, 这个就没啥多说的了,就是就一个Fragment 信息的holder,在 onSave/RestoreInstance时使用(不过可以了解一下整个Fragment体系的state的save/restore流程).再重申一下Fragment的6个状态(Fragment其实完全就是一个状态机):INITIALIZING = 0;原创 2015-05-16 13:42:28 · 680 阅读 · 0 评论 -
Android Fragment State Saving. 以及 Can not perform this action after onSaveInstanceState 异常.
FragmentActivity的onSaveInstanceState(Bundle outState)会调用: mFragments.saveAllState(),其返回一个Parcelable对象,并会将此对象放在onSaveInstanceState提供的 Bundle中, mFragments其实是一个FragmentManagerImpl<位于support v4的Fragment原创 2015-05-05 15:22:19 · 927 阅读 · 0 评论 -
ActiveAndroid 源码阅读笔记 (3)
10.自定义的contentProvider: 直接extends android原生的ContentProvider, 自定义的contentProvider被使用时必须添加至App自己的manifest文件中, (1)内部维护了一个自用的URI_MATCHER,以及一个当前Model衍生类的Class Type的 spareArray, authority原创 2015-05-04 15:49:57 · 543 阅读 · 0 评论 -
ActiveAndroid 源码阅读笔记 (2)
5.TableInfo: (1)内部引用: 一个Type, 该Type限制了Class必须extends Model, Table名称,Id名称, 一个Field对象和String的HashMap 对象的Field的对应关系>. (2)构造函数接受一个Class type(必须extends Model), 尝试获取此Class type的 Ann原创 2015-04-28 18:13:32 · 659 阅读 · 0 评论 -
ActiveAndroid 源码阅读笔记 (1)
新公司忙成狗,不过hold过来,但是因为自己之前android涉猎contentprovider和SQLiteDB很少,因此有些碰壁,决定读一遍ActiveAndroid这个DB操作封装集成框架的源码,补补这一块。ActiveAndroid源码解析:首先需要对数据库本身有一定的了解,很多类本身对应的就是SQL的一个组件/概念/操作。1. Annoation分析: java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。原创 2015-04-28 16:34:38 · 771 阅读 · 0 评论 -
Android Cursor源码笔记(2)
CrossProcessCursor**extends Cursor,按照注释所说,这是Cursor的一个扩展,支持Cursor被远端进程所使用(某种意义上,跨进程Cursor才是被用的最多的,因此这里也成了一个base的接口),一个跨进程的Cursor可以通过fill(fillWindow) 一个 CursorWindow(**A buffer containing multiple cursor原创 2015-05-09 15:01:30 · 1657 阅读 · 0 评论 -
Android Cursor源码笔记(1)
Cursor接口:extends Closeable,没啥说的.因为本身就是一个接口,所以其源码的最大价值其实就是作为一份guide存在,注释还有让人读的欲望的. 就当翻译一遍guide了.不过有些太过直白的函数就不cover了. Cursor说白了就是一个row set附赠一些辅助函数.getType(int columnIndex): 返回某个column的类型:FIELD_TYPE_NULL原创 2015-05-08 16:22:25 · 850 阅读 · 0 评论 -
Android:StatFs类 获取系统/sdcard存储空间信息
在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类。1. 判断 SDCard 是否存在,并且是否具有可读写权限 /*** 外部存储是否可用 (存在且具有读写权限)* @return*/ staticpublicboolean isExternalStorageAvailable() {转载 2015-02-15 20:00:50 · 505 阅读 · 0 评论 -
SharedPreference.Editor的apply和commit方法异同
在android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit方法, 今天无意了看到了系统用了apply,看了方法的介绍, 原来这个方法也是可以提交数据的.apply方法在官方SDK说明如下:Commit your preferences changes back from this Editor to the Shar转载 2015-01-22 21:06:55 · 367 阅读 · 0 评论 -
RxCache的简单源码分析
RxCache本身的一些宏观机制和自己的构思还是比较契合的: 最基本的一点,都将所有数据回调形式统一为Observable.复合key,tag + 附加信息的方式,但是RxCache做的更为复杂,还支持keyGroup的概念。数据提取模块化,每种数据提取方式都是独立的,并且是可扩展的,当然也是Obserable化的。对返回的数据进行包装从而得以返回更多元数据,比如source。都采取了di原创 2016-08-12 14:54:54 · 1398 阅读 · 1 评论