Welcome 微信登录

首页 / 软件开发 / JAVA / j2me进度条与线程化模型

j2me进度条与线程化模型2011-08-11FavoYang解决的问题

在j2me的UI体系中,UI操作是在一个独立的线程中运行的。往往在api doc中要求程序员对接口方法立 即返回。也就是说非阻塞的。你必须开启一个独立的线程来完成你自定义的复杂的工作,比如联网等可能 发生阻塞的io操作。新的线程如果不和用户交流,告诉用户线程正在工作的话,将会显现的非常不友好。 用户可能执行别的操作而扰乱程序的正常运行。一个简单的方法是提供一个进度条,这样用户就会愿意等 待上一会,直到程序运行出结果。为了将程序员从前台进度条与后台线程的通信中解脱出来,专心于后台 线程的开发,有必要设计一个进度条线程模型。

应该注意到进度条有多种的形式:

A, 动画形式进度条,仅表示程序正在运行(自维护的)

B, 可交互增量形式的进度条,后台线程通过调用进度条的相应方法在程序运行中不断的改变进度条 的状态

C, 进度条的表现形式应该灵活,不要固定其实现

D, 进度条对象要重复利用

进度调和后台线程的交流也有好几种情况:

A, 仅仅将进度条绘画在屏幕上,并等后台任务完成后,由后台线程跳转到成功画面。

B, 对于可取消的任务,用户可以通过点击进度条的按钮来试图cancel任务,后台任务应该尽快取消 ,并跳转到失败的画面

C, 对于不可跳转的任务,用户只有耐心等待

D, 如果背景线程运行失败,应自行跳转到失败的屏幕

进度条的设计(前台)

为了实现进度条的表现的多样性,首先抽象一个接口: