首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动和停止DayDream服务活动的正确方法

启动和停止DayDream服务活动的正确方法
EN

Stack Overflow用户
提问于 2016-10-31 20:39:05
回答 1查看 1.2K关注 0票数 1

我正在开发一个在特殊情况下应该显示白日梦的应用程序,我到处寻找合适的方式通过我的MainActivity类开始我的白日梦服务,但没有成功。

代码语言:javascript
复制
 public void startDayDream(){
    final Intent intent = new Intent(Intent.ACTION_MAIN);
    try {
        // Somnabulator is undocumented--may be removed in a future version...
        intent.setClassName("com.android.systemui",
                "com.android.systemui.Somnambulator");
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    } catch (Exception e) { /* Do nothing */ }
}
EN

回答 1

Stack Overflow用户

发布于 2016-11-05 04:19:01

我正以同样的方式开始它,但我还没有找到任何官方的方法或意图来阻止白日梦。

然而,你可以通过你的活动重新获得关注来停止白日做梦。为此,当您想要停止白日梦时,创建一个服务并将您的服务中的任何意图发送到您的活动中。作为副作用,如果你的活动是在后台进行的,那么当你收到意图时,你的活动会出现在前面。这种方法至少适用于Android4.4到5.1。

对于Android6来说,为了停止做梦,模拟一次唤醒就足够了。

代码语言:javascript
复制
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "WakeUpLock");
    if (wakeLock.isHeld())
      wakeLock.release();
    wakeLock.acquire();
    wakeLock.release();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40342372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档