j2me进度条与线程化模型

作者:袖梨 2022-07-02
j2me进度条与线程化模型
作者:FavoYang Email:[email protected] 欢迎交流
Keyworld:线程化模型 j2me UI设计
内容提要:
本文研究如何建立一个方便使用的线程化模型,这个线程化模型由前台的进度条UI 和后台的背景线程组成。
版权声明:
本文同时发表在www.j2medev.com和我的Blog(blog.111com.net/alikeboy)上,如果需要转载,有三个途径:1)联系我并经我同意;2)和www.j2medev.com有转载文章合作协议的 3)通过Rss聚合我的Blog。另外转载需要全文转发(包括文章的头部),不要断章取义。
正文:
解决的问题
在j2me的UI体系中,UI操作是在一个独立的线程中运行的。往往在api doc中要求程序员对接口方法立即返回。也就是说非阻塞的。你必须开启一个独立的线程来完成你自定义的复杂的工作,比如联网等可能发生阻塞的io操作。新的线程如果不和用户交流,告诉用户线程正在工作的话,将会显现的非常不友好。用户可能执行别的操作而扰乱程序的正常运行。一个简单的方法是提供一个进度条,这样用户就会愿意等待上一会,直到程序运行出结果。为了将程序员从前台进度条与后台线程的通信中解脱出来,专心于后台线程的开发,有必要设计一个进度条线程模型。
应该注意到进度条有多种的形式:
A, 动画形式进度条,仅表示程序正在运行(自维护的)
B, 可交互增量形式的进度条,后台线程通过调用进度条的相应方法在程序运行中不断的改变进度条的状态
C, 进度条的表现形式应该灵活,不要固定其实现
D, 进度条对象要重复利用
进度调和后台线程的交流也有好几种情况:
A, 仅仅将进度条绘画在屏幕上,并等后台任务完成后,由后台线程跳转到成功画面。
B, 对于可取消的任务,用户可以通过点击进度条的按钮来试图cancel任务,后台任务应该尽快取消,并跳转到失败的画面
C, 对于不可跳转的任务,用户只有耐心等待
D, 如果背景线程运行失败,应自行跳转到失败的屏幕
进度条的设计(前台)
为了实现进度条的表现的多样性,首先抽象一个接口:
ProgressObserver.java
package com.favo.ui;
import javax.microedition.lcdui.Display;
/**
* @author Favo
*
* 这是仿照Smart Ticket制作的进度条观察者,这个模型的优点是
* 1,低耦合度。你可以通过Form,Canvas等来实现这个接口
* 2,支持可中断的任务,因为背景线程是无法强制性中断的,

相关文章

精彩推荐