【发布时间】:2018-01-06 13:45:42
【问题描述】:
这个问题和上一个问题有关:Codename One - Notify something to the user every five minutes
我发现UITimer 在应用处于后台或智能手机空闲时不起作用。
考虑以下代码(在 Android 上测试):
public void start() {
if (current != null) {
current.show();
return;
}
Form hi = new Form("Five minutes alert", BoxLayout.y());
hi.add(new Label("Alert every five minutes..."));
Button button = new Button("Go to background");
button.addActionListener(l -> {Display.getInstance().minimizeApplication();});
hi.add(button);
hi.show();
sound();
UITimer.timer(1000 * 60 * 5, true, () -> {
sound();
});
Display.getInstance().minimizeApplication();
}
private void sound() {
try {
Media m = MediaManager.createMedia((Display.getInstance().getResourceAsStream(getClass(), "/bell.mp3")), "audio/mpeg");
m.play();
} catch (IOException err) {
Log.e(err);
}
}
问题是当应用程序打开时播放bell.mp3,之后应用程序自动进入后台,智能手机在几秒钟后变为空闲(即黑屏)(根据Android设置),并且五分钟后,sound() 方法不被调用。当我唤醒智能手机(按下电源按钮并在屏幕上移动一根手指)并且只有在按下“主页”按钮并将应用程序置于前台之后才会调用它。 如果应用程序已经在前台但智能手机处于空闲状态(即用户不使用时的正常状态),问题也是一样的。
所以,这是我的问题:我需要执行 sound() 以每五分钟自动播放一次声音(或执行其他操作)。什么是正确的方法?
【问题讨论】:
标签: codenameone