2011年12月31日

Android:下载与线程控制



最近在写的一个APP涉及到下载。
目前想到有两种设计方法。
方法一:建一个下载线程,与主线程保持同步。
1、启动下载线程。
2、在主线程利用synchronized锁定下载线程,前用wait()方法让主线程等待。// wait() = sleep() until notify();
3、下载线程利用synchronized加锁,操作完成后用notify()方法通知主线程释放。
这种方法的优点是可以保持2个线程的同步,缺点是下载线程未完成时主线程的界面冻结。

方法二:下载线程与主线程异步操作,利用Handler向Activity传递消息。
1、创建一个Handler类,重写handleMessage方法。
2、启动下载线程。
3、下载线程利用sendMessage(message)方法向Activity发送消息。
4、Handler.handleMessage()在处理下载完成的消息时,继续后续的动作。
这种方法的优点是方便在主界面显示进度条,也可以利用按钮中止下载。
缺点是主界面的一些业务逻辑要根据下载的状态进行一些判断。

没有评论: