- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 为什么在主线程的Looper.looper死循环不会卡死
public static void main(String[] args) { .... //创建Looper和MessageQueue对象,用于处理主线程的消息 Looper.prepareMainLooper(); //创建ActivityThread对象 //建立Binder通道 (创建新线程) thread.attach(false); Looper.loop(); //消息循环
2016-05-30 17:40:01 4672
原创 解决调用系统自带摄像头录像时从uri里面拿到的路径为空
首先感谢http://www.2cto.com/kf/201502/376975.html这篇文章的创作者 前几天调用系统摄像头录像后保存到一个路径上传视频 (魅族3 android 5.0),发现拿到的uri拿不到路径为空,找了好久找不到解决方法,结果发现android4.4之前和之后的uri格式是不同的,输出uri发现他的格式是这样的content://com.android.provider
2016-05-27 08:33:20 1843
原创 EventBus的使用
如果你学习过设计模式,那么当想通知其他组件某些事情发生时你一定会使用观察者模式。好了,既然能想到这个设计模式,那么就来看一个屌爆天的Android开源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。他的最牛逼优点是开销小,代码简洁,解耦代码。 上面说了,EventBus是一个观察者模式的实现
2016-05-20 20:33:17 425
原创 从源码角度看一个view和ViewGroup的测量过程
我们想想,如果我们要绘图,需要那几个参数?第一个:大小我们得知道吧,其次是位置,最后得知道怎么画吧 用什么颜色画,这和我们android中的绘图机制一模一样,接下来我们看看一个view的绘制 上节说performTraversals()会调用到performMeasure(),performLayout(),performDraw(),,我们先来看看第一步performMeasure()的源码 p
2016-05-13 11:45:20 557
原创 从源码角度看一个activity的绘制过程
我们都知道一个activity的绘制过程是从setContentView方法开始的 那么setContentView背后到底干了些什么不为人知的事情,今天让我们来揭开它神秘的面纱,我们来看看setContentView的源码 public void setContentView(@LayoutRes int layoutResID) { getWindow().setContent
2016-05-12 12:51:43 499
原创 从源码角度看一个apk的启动过程和一个activity的启动过程
APK程序的运行过程首先,ActivityThread从main()函数中开始执行,调用prepareMainLooper()为UI线程创建一个消息队列(MessageQueue)。 public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Activity
2016-05-06 16:19:34 2509 1
原创 android的四种启动方式和各自特点
1: Standard :android默认启动方式。系统在启动Activity 的任务中创建Activity 加入activity栈,每次向其加入,当用户按返回键或者销毁这个activity时从activity栈退出 2:singleTop:当activity启动方式设置为singletop时 启动时 系统会判断当前栈顶activity是不是要启动的activity 是则不创建新的activi
2016-05-05 16:45:24 778
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人