之前做过的项目要点总结

JiePang

1. 使用了图片下载线程池。

2. Callable与Runnable的区别。

3. 用Observer模式更新显示图片。

4. 网络请求用到ThreadSafeClientConnManager,https端口443。

5. ColorMatrix与Xfermode的使用。

6. 用Broadcast、Receiver来完成model与UI的交互更新。

7. 用IntentService处理通知提醒。

8. 传统的tabhost布局。

9. ContentProvider来给其他程序提供数据。

Weiyou

1. 两种网络连接模式,Socket与Http。

2. 用Protocol Buffers来pack和unpack二进制数据到流和从流读取。完成对象的网络流序列化和反序列化。

3. Socket的发送请求步骤:UI发起,send出Broadcast到一个统一的UIActionReceiver中,由UIActiionReceiver来打包,再发出Broadcast到DataSendReceiver来发送到Socket网络发送线程,之中维护一个PriorityQueue来确保可以通过优先级来执行网络请求,通过不同的命令CmdCode,来发送不同协议的网络请求。由工厂模式来生成不同的Processor分别处理网络请求后的返回数据,包括数据库存储,数据筛选等,最后在Runnable的末尾再发送Broadcast来通知UI。以上网络处理缺点:由于有队列,所以同时只有一个网络请求,但可以通过优先级来决定执行顺序。平时为wait状态,有新请求再notify。优点是不会产生数据库读写冲突。

4. Http的发送请求步骤:与上一条基本一致,区别是UIActionReceiver打包后发送到另外一台线程执行机,专门负责发送Http网络请求,由工厂模式生成不同的Runnale来实现数据库操作和网络发送,返回后由工厂模式来到另外一个HandlerThread中处理返回数据。

5. Socket的推送接受步骤:每隔一段时间会发送一个Ping的Socket请求,然后发送协议中会写好等待时间,继而进入等待状态,超时时间设置与协议中的一致,等待服务器端返回数据,如果这段时间内有新消息服务器会立即返回,客户端接受进入HandlerThread中处理。若没有会再次发送新的Ping包进入下一次循环。

6. 消息会话列表太复杂,包装成MsgModel,由Model生成View和Controller,并根据不同的消息类型来改变替换复用View。Controller来处理点击长按等事件。更符合MVC思想,代码变得整洁易读。

7. 全局的LruCache来处理图片和头像等的内存缓存,和SD卡缓存相补充。

8. 没有使用SQLiteOpenHelper,用DataBase类直接处理。


你可能感兴趣的:(查漏补缺,Android,android应用)