当前位置: 首页 > 知识库问答 >
问题:

当应用程序处于后台或智能手机空闲时,代号One - UITimer

况喜
2023-03-14

这个问题与前一个问题有关:代号一-每五分钟通知用户一些事情

我发现当应用程序处于后台或智能手机空闲时,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);
        }
    }

问题是,当应用程序打开铃铛时.mp3播放,之后应用程序自动进入后台,智能手机在几秒钟后(根据Android设置)变得空闲(这意味着黑屏),并且五分钟后不调用sound()方法。当我唤醒智能手机(按下电源按钮并在屏幕上移动一根手指)时,只有在按下“主页”按钮并将应用程序放在前台之后,才会调用它。如果应用程序已经在前台,但智能手机处于空闲状态(这是用户不使用时的正常状态),则问题相同。

所以,这是我的问题:我需要执行声音()来每五分钟自动播放一个声音(或者做其他事情)。正确的方法是什么?

共有1个答案

岳英锐
2023-03-14

EDT不在后台运行,因此没有UITimernocallSerially等。如果我们运行EDT,我们会消耗电池资源,操作系统会杀死应用程序,因此这不是您想要的。

您可能正在寻找的是背景音乐,这在这里的背景音乐部分中进行了讨论。

 类似资料: