转自:https://blog.csdn.net/danxinzhicheng/article/details/74922288
公司是做智能机顶盒产品的,DVB+OTT,(DVB其实就是和传统广电合作的,那种有电缆线的,播放直播的流是广电提供的,OTT则完全是联网的智能机顶盒,就像小米,天猫魔盒那种),公司业务比较杂,客户也比较多,公司有那种做底层固件的,主要是在Android底层去兼容公司的那种DVB业务,具体我也不懂,另外就是改改framework,比如开机LOGO,开机广告啥的。
然而,我做上层应用开发,毫无优越感。
机顶盒应用说白了是非基于源码的系统应用,其和手机普通app有很多区别,界面少,嵌套少,动画少,逻辑多,进程通信多,Bug千奇百怪,调试不方便。
哈哈,其实这才是开始
技术层面
1.比较少的自定义view,多的是自定义组合ViewGroup较多。最近在看android谷歌源码,好多都是这种,其实就是java层面的封装。
2.焦点问题!焦点问题!焦点问题!重要的事情说三遍,很多电视端的BUG源于此。掌握requestFocus,isFocused等api,以及selector用法,nextFocusDown/nextFocusUp/nextFocusLeft/nextFocusRight等xml属性。
3.掌握ListView/GrideView子item焦点,嵌套scrollView按键冲突,掌握Activity/View的onkeyDown,onKeyUp回调方法
4.掌握Android多进程通信,ContentProvider/AIDL,各种应用间隐式(Action/Uri)传递,因为你可能不止维护一个应用,多个应用之间可能会相互跳转界面。
5.掌握广播,service,这种组件在系统应用中很常见,比如开机启动广播,系统升级!
开发模式
1.MVP模式,很适合电视端这种小而业务多的app。
2.相对独立的功能模块独立成一个类,用单例模式。
3.工厂模式。对于客户多,业务相似的场景尽量用工厂,后期好扩展和维护。
4.观察者。用到不多,很简单实用,回调特别多,一定要掌握。
调试
1.eclipse开发,嗯对我觉得过时了,囿于当时技术有限,维护app太多,没敢迁移到as上,怕有风险;
2.导出成未签名的apk,用系统签名,adb push/adb install -r;看日志adb logcat -s xxx
3.公司BUG各种各样,有界面上的BUG(比如焦点),有业务上的,(比如和底层的交互,和其他应用的交互)。