【问题标题】:Codename One - UITimer when the app is in backgroud or the smartphone is idle代号一 - 应用程序在智能手机后台空闲时的 UI 计时器
【发布时间】: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


    【解决方案1】:

    EDT 不在后台运行,所以没有UITimer 没有callSerially 等。如果我们确实运行了 EDT,我们会消耗电池资源,操作系统会终止应用程序,所以这不是你想要的。我想要。

    您可能正在寻找的是在background music section here 中讨论的背景音乐。

    【讨论】:

    • 好的,但是如果我不能使用 UITimer 每五分钟安排一次,我可以使用什么来达到这个目的?另一个线程?如何每五分钟吸引一次用户的注意力?我的 mp3 只是一个很短的声音来引起用户的注意(它是一个通知声音)。我必须使用来自服务器的推送通知吗?在不涉及外部服务器的情况下有更好的方法吗?
    • 本地通知在那里,因此您的设备将被唤醒。您可以安排带有声音的新本地通知并执行此操作。请注意,移动设备并不“真正”支持多任务处理。他们会杀死一个试图在后台做事的应用程序,这是一件好事……想象一下一个应用程序,它每 5 分钟不断地播放一个 ping 声音,而没有任何迹象表明你的 100 个应用程序中的哪一个正在这样做。本地通知还包括视觉指示和防止这种情况的通知来源。
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2010-10-09
    • 2017-05-24
    相关资源
    最近更新 更多