安卓实习期间整理知识点(十四)

来源:互联网 发布:淘宝销量查询 编辑:程序博客网 时间:2024/05/16 09:59

安卓实习期间整理知识点(十四)

对public static final进行归类的必要性

使用单独的class如Constants去管理所有用于信息交换的信息,是个可接受的,合理的方法。不推荐在单独类声明这些常量,因为这将无意间增加了耦合性,如果一个类变化了,那么将导致变量也将变化,影响了其它的类。但是如果使用单独的类包含这些常数,那么它们将不会随类的变换而变换。

示例

public class Constant {    // BaseService    public static final String SERVICE_TYPE = "service_type";    public static final String GET_DATA_SUCCESS = "get_data_success";    public static final String IS_REFRESH = "is_refresh";    // NearbyService    public static final String NEARBY_PERSON_SERVICE = "nearby_person_service";    public static final String CURRENT_PAGE_NUMBER = "current_page";    public static final String CURRENT_PERSON_GENDER = "current_gender";    public static final String CURRENT_PERSON_LIST = "current_person_list";}

将多线程写入Service的必要性

  • 对于频繁与UI进行通信的线程,我们尽量不使用Service,而只是使用SyncTask或者Handler
  • 对于有些在后台使用的任务,如播放音乐,进行更新下载,需要使用Service,因为它与UI的显示独立
  • 为什么不使用Activity/Fragment->Service->BroadcastReceiver这种方法执行频繁的线程呢?1.通信开销大,如序列化,通常需要大量的时间 2.安全性,Broadcast可被其它非指定的Receiver获取

OOP思想:一次只做一件事的思考

  • 实例:UI线程。android中的UI线程被设计成只负责ui的更新。也就是说不在UI线程中执行消耗时间的任务,不在非UI线程上更新UI(android系统也不允许)。
  • 现在遇见的需要思考的问题:在开启Service更新Person和Date列表时,需不需要两个不同的service还是说使用if-else语句。最后我决定使用两个不同的service,这样做可以降低耦合性,一次只做一件事;但是这样会增加类的文件数量,有重复代码,解决方案可以是两个不同的service继承同一个子类,把相同的地方写入子类。
  • 尽量不在if-else中执行两个不同的任务操作,宁可将它们分开。
0 0
原创粉丝点击