为什么fragment不和activity直接通信呢?
高内聚,低耦合。Java是一种描述性语句,它虽然遵函数规则,但是它是面向对象的。fragment是依赖于activitY存在的。官方推荐两者之间用接口回调来通信,还有bundl和handler等对象。一个程序要执行,必须遵守一些规则,两者之间直接通信,那么程序就会变得非常凌乱,C/c++利用函数指针来进行回调,*fun表示的是函数在某一个内存中的地址,从当前位置开始执行程序。而java是没有指针的,但它有接口,通过接口,我们就不需要对fragment进行大量的更改,只需要在activity中实现。例如,fragment点一个按钮,那么画面更改,并且wifi发送消息。fragment自己直接更改,再建一个wifiUtil对象,然后socket对象发送行不行?当然可以,但是毫无疑问,这个wifi不止一个地方要用到,其他地方使用时你待保证当前的fragment还活着。fragment的诞生是为了让ui更加灵活,灵活的东西绑定太多东西会变得呆滞。windowiphone->activity->fragment,绑定最多东西的是window,其次是activity。越内聚,越灵活,越灵活,代表着兼容效果越好,性能越优。
从整体框架到细节的一些感悟:
每一个线程都有自己的堆栈,任务管理器不停的从一个栈跑到另一个栈运行不同的线程。而线程之间的通信有handler,队列,互斥锁,还有很多, 程序的独立性非常重要,直接读取内存来会极大的损耗性能。按照特定的方法能够更加安全和节省性能。