您的位置:首页 > 其它

让后台程序在桌面显示提示文字,并自动消失

2013-03-11 11:58 447 查看
后台运行的程序(Application)没有窗口(Screen),也就无法显示提示窗口(Dialog),使用下面的代码可以让后台程序在桌面显示提示信息,并在5秒钟后或按任意键后自动消失。

首先,在需要提示的地方,加入如下代码

synchronized (Application.getEventLock())
{
Screen screen=new GlobalDialogScreen("Something text showing on HomeScreen");
Ui.getUiEngine().pushGlobalScreen(screen, 1, UiEngine.GLOBAL_QUEUE);
}


其次,新建一个PopScreen窗口类

package code;

import java.util.Timer;
import java.util.TimerTask;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Ui;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.HorizontalFieldManager;
import net.rim.device.api.ui.container.PopupScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class GlobalDialogScreen extends PopupScreen
{
public GlobalDialogScreen(String msg)
{
super(new VerticalFieldManager(),Field.FOCUSABLE);
HorizontalFieldManager hfm=new HorizontalFieldManager();

hfm.add(new BitmapField(Bitmap.getPredefinedBitmap(Bitmap.INFORMATION)));
hfm.add(new LabelField(msg));

add(hfm);

Timer timer=new Timer();
TimerTask timerTask;

timerTask=new TimerTask() {
public void run() {
getApplication().invokeAndWait(new Runnable() {
public void run() {
closeScreen();
}
});
}
};
timer.schedule(timerTask, 5000);
}

private void closeScreen()
{
Ui.getUiEngine().popScreen(this);
}

public boolean keyChar(char key, int status, int time)
{
Ui.getUiEngine().popScreen(this);

return true;
}
}


发现bug,如果按键盘任意键关闭窗口,TimerTask继续运行,最后导致NullPointerException,还是取消按任意键关闭窗口吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐