繁体   English   中英

屏幕关闭时如何开始活动?

[英]How do i start activity when screen goes off?

我有一个仅在设备屏幕关闭时才在工作的应用程序。 我已经设置了广播接收器( Intent.ACTION_SCREEN_OFF ),并且工作正常。 当设备屏幕关闭时,我总是在LOGCAT中记录。 到现在为止还挺好。

我来自ACTION_SCREEN_OFF的onReceive代码使用一些代码来计算内容,并且全部执行正常(当屏幕关闭时)。 到现在为止还挺好。

在我的onReceive代码结束时,我将开始新的活动,但是定向活动的onCreate并不总是执行。 (例如,在我的HTC Desire 2.3.7上工作正常。在HTC Wildfire S 2.3.5,Xperia Arc S 2.3.4上它无法执行,而在Samsung Galaxy ACE 2.2.1上则取决于执行情况。 t)。 我的LOGCAT显示onReceive一直执行到最后,但Activity尚未启动。 我正在使用以下代码来开始此活动:

Intent startH_Activity = new Intent(getApplicationContext(), HandleActivity.class);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(startH_Activity);

需要注意的重要事项:

  • 我说过,在上面提到的某些手机上它不起作用。 好吧,它不能立即工作,就像应该的那样(当SCREEN_OFF触发时)。 总是开始活动。..屏幕关闭后10-15分钟(这是不可接受的)

  • 当屏幕关闭且活动无法开始时,如果我按设备上的电源按钮,则会立即触发我的目标活动,并且应用程序将正常运行。 (同样,这是不可接受的。它应该会自动触发)。

  • 当任何设备连接到PC时,它的工作均应正常进行。 屏幕关闭后,活动立即开始。

在阅读了很多堆栈溢出后,我意识到这是因为MAYBE设备进入睡眠状态。 这就是为什么如果我按电源按钮或在10到15分钟后会自动唤醒,因为它会同步或类似的问题,它会像正常一样工作。 所以我用了WAKELOCK。

//OnCreate Service
powMan = (PowerManager) getSystemService(POWER_SERVICE);
wake = powMan.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");

//OnReceive (screen goes off)
wake.acquire();

但是仍然没有成功。 (我做错了吗?)即使获得了唤醒锁,我的活动也不会显示在这些设备上。

基本上我在问什么。 屏幕关闭时如何打开日常活动? 或者至少在活动无法开始时如何打开屏幕(请记住,按电源按钮会显示我的活动

我现在真的需要一些帮助,因为对此我感到非常沮丧。 谢谢你的帮助。

屏幕关闭时,您应该启动服务而不是活动。

屏幕打开时,我将注册另一个广播接收器并启动Activity( Intent.ACTION_SCREEN_ON )。

两个问题:

1)如何将数据从一个接收器传递到另一个接收器? 我想到的是启动服务或将信息保存到文件(或共享首选项)中。

2)如果必须启动一个活动的两个事件会怎样? (例如“某事已开始”和“某事已结束”。)您必须解决此问题,要么显示两个事件,要么仅显示最新事件。

请注意,用户可以在不解锁屏幕的情况下打开和关闭屏幕( Intent.ACTION_USER_PRESENT ),并且如果将电话​​配置为不锁定屏幕,则不会发生Intent.ACTION_USER_PRESENT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM