DAYS

只要写下来,人的念想就能超越死亡与时间,永远存在下去。

0%

ViewModel

像Activity,Fragment这类应用组件都有自己的生命周期并且是被Android的Framework所管理的。Framework可能会根据用户的一些操作和设备的状态对Activity或者Fragment进行销毁和重构。作为开发者,这些行为我们是无法干预的。

所以Activity或Fragment中的一些数据也会随着销毁而丢失,随着重构而重新生成。比如你的Activity中有个用户列表,当这个Activity重构的时候,新的Activity会重新获取用户列表。对于一些简单的数据,Activity可以使用onSaveInstanceState()方法,并从onCreate的bundle中重新获取。但这一方法途径仅仅适合一些简单的UI状态,对于用户列表这种庞大的数据并不适合。

阅读全文 »

LiveData

LiveData是一个用于持有数据并支持数据可被监听(观察)。和传统的观察者模式中的被观察者不一样,LiveData是一个生命周期感知组件,因此观察者可以指定某一个LifeCycle给LiveData,并对数据进行监听。

如果观察者指定LifeCycle处于Started或者RESUMED状态,LiveData会将观察者视为活动状态,并通知其数据的变化。

阅读全文 »

dart

翻译自https://www.dartlang.org/articles/event-loop/

异步任务在Dart中随处可见,例如许多库的方法调用都会返回Future对象来实现异步处理,我们也可以注册Handler来响应一些事件,如:鼠标点击事件,I/O流结束和定时器到期。

这篇文章主要介绍了Dart中与异步任务相关的消息循环机制,阅读完这篇文章后相信你可写出更赞的异步执行代码。你也能学习到如何调度Future任务并且预测他们的执行顺序。

在阅读这篇文章之前,你最好先要了解一下基本的Future用法

阅读全文 »

前言

各位码友不知道有没有发现,不知道从何时,Android Studio的Gradle构建系统就已经把Jcenter作为默认的远程仓库了,如下:

1
2
3
4
5
6
7
8
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
}
}

而这样做的好处就是我们只需要在dependencies脚本块中加入对应lib即可使用远程仓库,而不需要再像eclipse那样苦苦寻找jar包。

阅读全文 »

这是Tumblr上一个名为1041uuu的插画师绘制的像素画。这些作品经过像素处理后,好像一下回到“任天堂”“红白机”的年代,在“魂斗罗”里过关斩将,在“超级玛丽”中狂吃蘑菇。









Dart与消息循环机制

翻译自https://www.dartlang.org/articles/event-loop/

异步任务在Dart中随处可见,例如许多库的方法调用都会返回Future对象来实现异步处理,我们也可以注册Handler来响应一些事件,如:鼠标点击事件,I/O流结束和定时器到期。

这篇文章主要介绍了Dart中与异步任务相关的消息循环机制,阅读完这篇文章后相信你可写出更赞的异步执行代码。你也能学习到如何调度Future任务并且预测他们的执行顺序。

在阅读这篇文章之前,你最好先要了解一下基本的Future用法

阅读全文 »

显示和隐藏隐藏文件

1
2
defaults write com.apple.Finder AppleShowAllFiles YES && killall Finder
defaults write com.apple.Finder AppleShowAllFiles FALSE && killall Finder
阅读全文 »