JAVA&Android随记(4)

1. Collections有两个方法,unmodifiableCollection(Collection c)和synchronizedCollection(Collection c)前者保证传入的Collection变为不可修改的,后卫保证传入的Collection变为同步的。


2. JAVA的I/O有两种类型,一种是xxxxxReader或者xxxxxWriter(例如FileReader,FileWriter),这是字符流,还有一种是xxxxxInputStream或xxxxxOutputStream(例如DataInputStream,DataOutputStream)这是字节流,还有一种可以随机读取和写入的,RandomAcessFile。具体操作参考http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html    http://azrael6619.iteye.com/blog/423163


3. 关于JAVA的强,软,弱,虚引用。http://zhangjunhd.blog.51cto.com/113473/53092/   值得一提的是,在早期版本的Android中,可以用软引用来做缓存,但是在高版本的Android中,虚拟机会倾向于回收持有软,弱引用的对象(例如持有软引用的一个List),所以这变得不再可靠,做内存缓存最好使用LruCache。


4. JAVA中可以向enum添加方法(JAVA编程思想P592)。有关于enum和static final的区别,个人觉得是由于enum中可以添加方法,所以enum可以用来描述更加复杂的对象,而static final只能单纯的描述一个方面(比如一个int值或者一个String值)。 http://bbs.csdn.net/topics/390897807 参照二楼的回复。


5. enum的values()方法是编译器添加的static方法,就是说Enum类是没有values()方法的,而一个enum实例是有的,是编译器在编译期间添加的。(P959)。


6. EnumSet(P601),EnumMap(603)。


7. 有关于注解(P622,623)。


8.注解在Android中的引用就是Ioc,和反射一起使用。反射的使用有利有弊,具体参照 http://blog.csdn.net/buaaroid/article/details/34433565。


9. Callable和Runnable的区别,Callable要实现一个带有返回值的call方法,而Runnable实现的是没有返回值的run方法。也就是说Callable是有返回值的,Runnable是没有返回值的,Callable的使用要结合Future和FutureTask还有Excutors或者Thread,具体使用方法参考 http://blog.csdn.net/lfdfhl/article/details/40739099。


10. 有关于Thread的join方法(P670)。


11. 线程中的异常有时候会出现逃逸的情况,这是无法捕获的,即使你写了catch,这时候可以重写UnCaughtExceptionHandler来捕获异常。(P673)。UnCaughtExceptionHandler在Android也有使用,可以用来捕获异常并友好退出。具体参照 http://blog.csdn.net/xiaanming/article/details/9344703。


12. Excutorservice和ThreadPoolExecutor的区别与联系 具体参考 http://blog.csdn.net/linghu_java/article/details/17123057。


13. 关于Android在onCreate()的时候获取view宽高是0的问题,是因为Activity中的view在onCreate()的时候并没有进行测量与绘制,要到onResunme()的时候才会进行,所以当然获取不到宽高,可以使用treeViewObserver或者View.post()方法来获取,view.post()能够获取的原因是因为post出去的runnable会被封装成一个message,然后加入到消息队列中,不会马上执行,要等到轮到它执行时才执行,这个时候view已经测量绘制完毕了。


14. View的getTop,getRight等方法 http://www.cnblogs.com/zhengbeibei/archive/2013/05/07/3065999.html 。


15. 获取View在屏幕中的坐标 http://blog.csdn.net/sjf0115/article/details/7306284。


16. 大家都说不能在子线程中更新UI,其实有一种情况是可以的。 具体参照 http://blog.csdn.net/aigestudio/article/details/43449123。


17. 有关于ActivityThread,可以说这是Android程序的入口,会在其中初始化Application,Activity,其中有一个performLaunchActivity方法,在里面会调用Activity的onCreate(),onStart(),onResume的方法,具体参照 http://blog.csdn.net/ljsbuct/article/details/7094580。


18. Thread中几个容易搞混的方法(sleep(),wait(),yield(),等)。 具体参照 http://blog.csdn.net/partner4java/article/details/7993420。


19. 关于Android的setContentView()方法,具体内部会调用PhoneWindow的setContentView()方法,在其中初始化一个DecorView(Android的根视图),然后根据Theme,XML等绘制Activity。 具体参照 http://blog.csdn.net/lmj623565791/article/details/41894125。


20. 有关于DecorView 其实就是一个FrameLayout,有一个子布局LinearLayout,接下去是一个FrameLayout(里面一个TextView,这是标题栏),另外一个FrameLayout(里面就是你在XML里写的布局) 具体参照 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0322/1054.html。


21. 如果你在XML中给ImageView设置的是src,那么在JAVA代码中使用imageview.getBackground()是得不到任何东西的,要使用getDrawable(),反过来如果设置的Background,那么使用getBackground()是可以得到一个drawable的。


22. 关于Android的Context,这是一个抽象类,Application,Activity,Service都实现了它,但是它的具体实现是在一个ContextImpl类中,Context的最用最多就是用于取得资源,之所以所有的activity取得的都是同一套资源,是因为ContextImpl中实现了一个取得资源的方法,通过一个ResourceManage来获取,而ResourceManager是单例的,所以不同的Context获取的都是同一套资源。具体参照 http://www.cnblogs.com/android100/p/Android-Context.html。


23. Android中的AIDL(ndroid Interface Definition Language)。一个AIDL文件编译后会产生一个接口,一个stub类和一个proxy类,stub类又service实现,其中有一个onTransact()方法,而proxy类是一个代理类,在客户端,调用了service中AIDL接口的方法,实际上就是调用了proxy类中的方法,proxy类又会调用onTransact()方法,然后返回具体的内容,传递数据都是通过Parcel来实现的。而Binder则充当的是一个传递的作用,将对象从service传递到客户端,使用Binder.asInterface来获取具体的对象。具体参照 http://www.th7.cn/Program/Android/2012/05/24/77334.shtml 

 omeego/article/details/9612875  

http://blog.csdn.net/lmj623565791/article/details/38461079


24. Android中很多的manager(例如AlarmManager)都是通过Binder和AIDL来实现的。 具体参照http://blog.csdn.net/singwhatiwanna/article/details/18448997




最后请大家多多支持小巫的视频教程~ 谢谢 具体地址http://blog.csdn.net/wwj_748/article/details/44892627

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值