- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 Android使用技巧------Activity中怎么样在子线程和UI线程中来回自如
一个方法:runOnUiThread一个类:HandlerThread
2016-12-30 18:20:32 304
原创 基于NoHttp+RxBus+MVP+DataBinding实现网络文件下载(带进度条)
前面有两篇文章讲到的是NoHttp+RxBus和NoHttp+RxBus+MVP从网络下载文件:NoHttp+RxBusNoHttp+RxBus+MVP这里再把DataBinding怎么使用加了上去,感兴趣的话可以下载源码看看。点击打开链接
2016-12-20 11:20:15 526
原创 基于NoHttp+RxBus+MVP实现网络文件下载(带进度条)
前面有一篇文章写的是NoHttp+RxBus实现网络文件的下载,此篇文章是对上一篇文章的升级版本,使用到了MVP模式。上一篇地址:点击打开链接传统的Android开发使用的是的MVC模式,个人觉得之前用MVC开发都是全写一个类-Activity里面,业务复杂的情况下看着头疼。™ Activity到底算V还是C,还是两者都是?傻傻分不清楚。使用MVP的话,view由Activity承担,Pr
2016-12-19 14:06:45 1102
原创 Android 6.0中"Unable to find optional library: org.apache.http.legacy"错误解决
Android 6.0版本已经已经基本将Apahce Http Client 移除出SDK,会报出以下错误:" Unable to find optional library: org.apache.http.legacy" 那么问题来了,如果我在以前的项目中使用了Apache HttpClient相关类,怎么办呢?请看官网给出的解决Apache HTTP
2016-12-17 11:07:59 274
原创 Android源码编译开启ccache缓存
当你删掉out/target目录或者使用make clean清空输出重新编译源码的时候,编译时间通常都很漫长。其实这个问题很容易解决,Android官方为我们带来了解决方案–ccache编译器缓存。官方这么讲:You can optionally tell the build to use the ccache compilation tool. Ccache acts as a co
2016-12-14 17:23:45 8296
转载 RxJava 驯服数据流之 hot & cold Observable
Observable 数据流有两种类型:hot 和 cold。这两种类型有很大的不同。本节介绍他们的区别,以及作为 Rx 开发者应该如何正确的使用他们。Cold observables只有当有订阅者订阅的时候, Cold Observable 才开始执行发射数据流的代码。并且每个订阅者订阅的时候都独立的执行一遍数据流代码。 Observable.interval 就是一个 Cold
2016-12-08 17:44:43 230
转载 RxJava 驯服数据流之时间平移
Rx 最大的特征之一就是无法预测何时会有数据发射。有些 Observable 会同步的即可发射所有的数据,比如 range ,有些按照一定的时间间隔发射数据、有些根本无法确定到底何时发射数据。例如,鼠标移动时事件和 UDP 数据包到达的时刻。我们需要合适的工具来处理这些无法确定何时发射的事件。Buffer 缓存Buffer 可以收集数据并缓存起来,等缓存到固定的数目后一起发射,而不
2016-12-08 17:44:07 475
转载 RxJava 驯服数据流之组合数据流
组合数据流到目前为止我们介绍了如何创建数据流以及如何把数据流中的数据转换成我们需要的数据。然而,大部分应用都需要处理多个数据源的数据。需要一种把多个数据源组合一起的方法。在前面的介绍中,也看到了一些数据流会使用多个 Observable。本节介绍如何把多个数据源的数据组合为一个数据源的操作函数。Concatenation一个数据流发射完后继续发射下一个数据流是一种很常见的组
2016-12-08 17:43:37 210
转载 RxJava 错误处理
一般来说,Observable不会抛异常。它会调用 onError 终止Observable序列,以此通知所有的观察者发生了一个不可恢复的错误。 但是,也存在一些异常。例如,如果 onError 调用失败了,Observable不会尝试再次调用 onError 去通知观察者,它会抛出 RuntimeException,OnErrorFailedException 或者 OnErrorNotImpl
2016-12-08 17:43:03 1017
转载 RxJava 驯服数据流之高级错误处理
在实际项目代码中可能出现各种各样的异常情况,并不是每一个异常都需要告诉上层代码的。在传统的 Java 中,你可以捕获一个异常,然后决定是自己处理该异常还是再次抛出去。同样,在 RxJava 中,你也可以根据异常来执行不同的逻辑而无需结束 Observable,也不再强迫 Observer 处理所有情况。ResumeonErrorReturnonErrorReturn 操
2016-12-08 17:42:23 240
转载 RxJava 驯服数据流之避免monad
monad 是函数式编程中的抽象概念,是一种高度的数学抽象,关于 monad 的详细介绍请看这里: Functors, Applicatives, And Monads In Pictures ,不要百度搜索其他的资料, 关于 monad 的介绍,在网上有 90% 都是错误的,误导人的。在 www.introtorx.com 中也有一个简短的定义: Monad 是一种在模型域对象中
2016-12-08 17:41:53 218
转载 RxJava 驯服数据流之副作用
前面两部分,我们学习到了如何创建 Observable以及如何从 Observable 中获取数据。本部分将介绍一些更高级的用法,以及一些在大型项目中的最佳实践。Side effects(副作用)没有副作用的函数通过参数和返回值来程序中的其他函数相互调用。当一个函数中的操作会影响其他函数中的返回结果时,我们称该函数有副作用。写数据到磁盘、记录日志、打印调试信息都是常见的副作用表现。
2016-12-08 17:41:25 156
转载 RxJava 事件流之转换数据流
Transformation of sequences本节介绍转换数据流中数据的方法。在真实世界中, Observable 中的数据可以是任意类型的,可能在你的应用中无法直接使用这些数据类型,你需要对这些数据对象进行一些转换。 map 和 flatMap 是本节中操作函数的基础。 下面是三种转换方式的示意:Ana(morphism) T –> ObservableCata(mo
2016-12-08 17:40:59 341
转载 RxJava 事件流之聚合
Aggregation前面介绍了如何过滤掉不需要的数据、如何根据各种条件停止发射数据、如何检查数据是否符合某个条件。这些操作对数据流来说都是非常有意义的。 本节介绍如何根据数据流中的数据来生成新的有意义的数据。本节的操作函数会使用源 Observable 中的事件流中的数据,然后把这些数据转换为其他类型的数据。返回结果是包含一个数据的 Observable。如果你从头开始阅
2016-12-08 17:40:29 397
转载 RxJava 事件流之检查数据
Inspection 检查数据是否符合某一条件前面一节介绍了如何过滤掉我们不关心的数据。有时候我们需要了解该数据流中的数据是否符合某一条件。本节来介绍一些检查数据流中数据的函数。allall 函数用来判断 observable 中发射的所有数据是否都满足一个条件。public final Observable all(Func1super T,java.lang.Boo
2016-12-08 17:39:53 222
转载 RxJava 事件流之过滤数据
现在你可以用 Rx 来处理大批量实时数据,但是如果把所有大批量数据整个打包发给你的话,使用 Rx 还有啥优势呢? 本节 我们将介绍一些操作函数(operators )来过滤数据、或者把所有数据变成一个需要的数据。如果你了解过函数式编程(functional programming)或者 Java 中的 Stream,则本节介绍的操作函数是非常眼熟的。本节中所有的操作符都返回一个不影响前一个
2016-12-08 17:39:12 226
转载 RxJava 创建事件流
了解了 Rx 的概念,就要了解怎么创建和操作事件流了。操作事件流的原始实现是基于 C# 的 LINQ,而 LINQ 是受到 functional programming 启发的。如果你了解 LINQ 更容易理解本节内容, 如果不了解也没关系。我们将从最简单的内容开始介绍。 大部分的 Rx 操作函数(operators )用来操作已经存在的事件流。在介绍操作函数之前,先来看看如何创建一个 Obser
2016-12-07 18:09:47 191
转载 RxJava入门之生命周期管理
Rx 背后的理念是:无法知道事件流何时发射数据、也不知何时结束发射,但是你需要控制何时开始和结束接受事件。订阅者可能使用了一些资源,这些资源需要在停止接收事件的时候释放。 通过 subscription 可以实现生命周期管理。SubscribingObservable.subscribe 有好几个重载函数,每个函数都是某种情况的简化形式。Subscription subs
2016-12-07 18:08:56 232
转载 RxJava 入门之关键的类
Rx 有两个最基础的类型,和其他一些扩展这两种类型的类。两个核心的类为: Observable 和 Observer。Subject 是同时继承了 Observable 和 Observer。Rx 是在 Observer 模式之上建立起来的。这种模式很常见,在 Java 中有很多地方都使用了该模式,比如 JavaFx 中的 EventHandler。 这些简单的使用方式和 Rx 对比有
2016-12-07 18:06:12 262
原创 使用dataBinding,真正不用findViewById
1.在工程的build.gradle文件的android节点添加dataBinding,属性值为:enabled = true如下:android { ...... //AS 1.3才可以使用 dataBinding { enabled = true } ...... }2.布局文件中声明:
2016-12-05 23:31:50 570
原创 Android定制--------调用SystemProperties编译器报错
private static String getBuildNumber(String s) { Object obj; try { Class classz = Class.forName("android.os.SystemProperties"); Method method = classz.g
2016-12-05 10:41:17 1466
原创 Android定制--------自定义关机时间
源码路径:frameworks\base\services\core\java\com\android\server\power\ShutdownThread.java +private static final int MAX_SHUTDOWN_TIME = 5*1000; //增加 5s 可以适当调整以满足关机动画会播放完整 + private static long s
2016-12-05 10:39:59 738
原创 Android定制--------设备在预装了两个浏览器Chrome与Browser的情况下,Browser内置的书签不显示
由于chrome要求安装BookmarkProvider, 而BookmarkProvider与系统浏览器中BrowserProvider2 authorities相同, 系统认为是相同的provider, 使用中BrowserProvider2的数据库并未创建, 导致系统浏览器一系列异常。经调研过,如果GMS与系统浏览器共存,可以不编译bookmarkprovider,不会影响CTS与GMS。
2016-12-05 10:38:11 3496
原创 Android定制--------强制切换到听筒模式
源码路径:\packages\apps\InCallUI\src\com\android\incallui\AudioModeProvider.java方法:public void onAudioModeChange(int newMode, boolean muted);添加如下判断:if(newMode == AudioState.ROUTE_EARPIECE){newMo
2016-12-05 10:36:10 3905
原创 adb命令
查看当前activty栈顶的Activity名称:adb shell dumpsys activity | findstr "mFocusedActivity"发送广播:adb shell am broadcast -a XXXXXXX (XXXXX为Intent的Action)启动某个Activity:adb shell am start-n breakan.test/breakan
2016-12-05 10:33:22 254
原创 常用的git命令
git clone :git clone tlh@192.168.1.56:/home/wsq/Extend/wsq/android/sprd/src/sc7731/android6.0/sc7731_m -b sc7731_m (-b是参照clone目标的某一条分支)创建分支,进行分支管理:分支创建与删除:git branch -va 查看分支状态+本地分支状态
2016-12-05 10:28:37 288
原创 RxJava获取本地视频
没有接触过RxJava的童鞋可以先看看"大头鬼"的RxJava基础讲学:http://blog.csdn.net/lzyzsd/article/details/41833541首先,在工程的build.gradle文件中dependencies节点直接把RxJava的依赖写上:dependencies { .... //编译RxJava所需依赖 compile 'io.
2016-12-05 09:42:18 2422
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人