2015年终总结 | cfanr

作者:JerryXia | 发表于 , 阅读 (30)
碎碎念这些天,回首2015的点滴,感到十分压抑和悔恨: 2015,太过焦急浮躁了,最大的遗憾就是不够专注去学习Android技术,学得不温不火,浪费了不少时间在“观望”中,还有对目前的工作并不是十分满意。
不断反思原因:
一件事是关于产品和技术方向的问题。大四开始找工作时,就曾想过找产品经理方面的工作(但并不是因为技术不行才做产品,只不过对产品也十分感兴趣而已),后来考虑到自己产品方面的综合素质还不行,先学好技术再转型产品是更好的选择。虽然是这样想的,但这一年自己却是毫无重心可言,既没有偏向技术,也没有偏向产品,只能说花了不少时间在获取信息上(只是信息,不是知识,没得到很好消化)。如平时关注很多优质的公众号、独立博客、技术分享平台、产品和设计等,看过很多文章,却没有去实践;列了很多TODO,却没有完成的;有很多idea,却没一个真正动手去做的……关于关注产品的事,可以唠叨一大篇文章,在此就不多吐槽自己了。假如要颁一个年度最佳技术“收藏家”的话,我无疑会获奖!发现近一年多越来越多技术分享的平台了,如开发技术前线、Android开发技术周报、代码家的“gank.io”,开发者头条和掘金...阅读全文

Android开发艺术探索笔记-1.Activity的生命周期和启动模式 | cfanr

作者:JerryXia | 发表于 , 阅读 (45)
1.1Activity生命周期全面分析
onCreate(), 加载界面布局资源,初始化Activity需要的数据等onStart(), Activity已经是可见状态,但未出现在前台,无法与用户交互;onResume(), Activity已经可见,处于前台,所以一般如果需要返回页面自动刷新数据时,将请求的方法放在onResume;onPause(), 不能做太耗时的操作,onPause必须执行完,新的Activity才会启动,也就是说ActivityA跳转到ActivityB,执行顺序: ……A:onPause()->B:onCreate()->B:onStart()->B:onResume()->A:onStop()onStop(), Activity不可见时会调用,所以当新的Activity采用透明主题时,当前Activity不会调用onStop();onDestroy(), 回收资源,取消注册广播等;onStart()和onStop()是从Activity是否可见来回调,而onResume()和onPause()是从Activity是否位于前台来回调。
异常情况下的生命周...阅读全文

Android开发艺术探索笔记-2.IPC机制 | cfanr

作者:JerryXia | 发表于 , 阅读 (63)
2.1 Android IPC简介IPC是Inter-Process Communication的缩写,是进程间的通信或跨进程通信,指两个进程之间进行数据交换的过程。线程是CPU调度的最小单位,是一种有限的系统资源,而进程一般指一个执行单元,可以包含多个线程。任何一个系统都有IPC机制,Linux上是通过命令管道、共享内容、信号量来进行进程间通信的。
2.2 Android中的多进程模式(1). 开启多进程模式为四大组件在AndroidManifest中指定android:process属性:
指定完整进程名,如android:process=”com.google.play.remote”。以“:”开头,比如设置为android:process=”:remote”。则系统会在实际运行的进程名前加上应用程序的包名,即变成“com.google.play:remote”另外一种非常规的方法是通过JNI在native层去fork一个新的进程。Android系统会为每个应用分配一个唯一的UID,具有相同UID的应用才能共享数据。两个应用通过ShareUID跑在同一个进程中是有要求的,需要...阅读全文

Android 开发艺术探索笔记-3.View的事件体系 | cfanr

作者:JerryXia | 发表于 , 阅读 (24)
3.1 View基础知识1.View是所以控件的基类,ViewGroup也属于View
2.View的位置参数由top、left、right、bottom,左上角和右下角的横纵坐标决定(相对View的父容器)。Android3.0开始增加了几个参数:左上角坐标x和y、左上角相对父容器的偏移量translationX和translationY(默认值为0)x = left + translationXy = top + translationY平移时,top、left不会发生改变,始终为原始坐标
3.MotionEvent和TouchSlopMotionEvent事件类型:ACTION_DOWN——手指刚接触屏幕ACTION_MOVE——手指在屏幕上移动ACTION_UP——手从屏幕上松开的一瞬间通过MotionEvent可以获取x、y坐标,有两种方法:a.getX和getY,返回相对于当前View左上角x、y坐标;b.getRaw和getRawY,返回相对于手机屏幕左上角的x、y坐标
TouchSlop是系统所能识别出被认为是滑动的最小距离。可以通过如下方式获取该值:ViewCo...阅读全文

Android中的Handler, AsyncTask, Thread和Service相关 | cfanr

作者:JerryXia | 发表于 , 阅读 (40)
Android中Handler和AsyncTask的区别
注:AsyncTask在1.6前是串行的,在1.6开始采用并行,不过到3.0又改回串行,避免并行带来的错误(在1.6-3.0以前,系统默认最大并发执行5个线程,缓冲线程队列最大128个,10个任务的等待,超过会出现java.util.concurrent.RejectedExecutionException异常。在3.0以后,无论有多少任务,都会在其内部单线程执行;)3.1系统以上,可以调用new AsyncTask().executeOnExecutor(Executor exec, Params… params)自定义线程池执行
附:
**深入源码解析Android中的Handler,Message,MessageQueue,LooperAndroid消息处理机制:源码剖析Handler、Looper,并实现图片异步加载...阅读全文