Articles of android wake lock

即使我释放它,WakeLock仍然保持错误状态

我有一个应该在后台运行的服务。 它在我的应用程序打开时启动,并在用户closures应用程序时结束。 每当我的应用程序在后台或屏幕closures,我仍然需要服务运行。 我用WakeLock实现了这个function,但由于某种原因,我在标题中遇到了错误。 这是有关的,因为我可能是内存泄漏WakeLock(如果我理解正确)。 我能够通过重新启动我的应用程序触发错误。 这是相关的代码: public class SomeService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); PowerManager manager = (PowerManager) getSystemService(POWER_SERVICE); mWakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG"); if (!mWakeLock.isHeld()) mWakeLock.acquire(); //Handle other processing return START_STICKY; } @Override public void onDestroy() { if (mWakeLock.isHeld()) mWakeLock.release(); super.onDestroy(); } } […]

Android Espresso,testing前唤醒设备。 如何使用自定义清单进行testing?

我一直在用androids新的espresso框架编写testing,发现它运行良好。 一件令人讨厌的事情(特别是浓咖啡)是我必须确保我的屏幕清醒和解锁的testing运行。 我发现一个解决方法(通过各种来源),但我不知道最好的方式来整合它。 所以这就是我所做的,在我的“家庭”活动中,我有以下代码: Home.class: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /************ Put this in a conditional for a test version ***********/ KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); KeyguardManager.KeyguardLock keyguardLock = km.newKeyguardLock("TAG"); keyguardLock.disableKeyguard(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); } 还需要添加以下权限: <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> 所以在做完这些之后,现在我的testing就会唤醒我的手机,所以我不必保持警惕,确保在testing开始之前屏幕没有closures。 我宁愿不包括这些权限,但显然在我的应用程序。 我知道gradle有可能做出不同的“口味”,有自己的Android清单,将合并到主清单。 我正在考虑使用,但我宁愿不添加一个风味,只是因为这个原因,因为这已经使用testing构buildtypes来运行。 它看起来像从Android Gradle的文档,你不能创build一个AndroidManifest的instrumentTest目录,因为它会自动生成。 然而,我想知道是否有另一种方法来做到这一点,而不创build一个变体,然后指定testing应该运行该变种。 此外,我不确定所有这些的确切语法,并认为只是在网站上为其他人提供这些信息似乎很好。 最后,如果有人知道更好的方法来解决这个问题,那么我很乐意听到这个问题,因为我不是这种方式的忠实粉丝。

打开接收器/服务的屏幕

我希望我的应用程序能够打开屏幕并显示我的应用程序。 假设我正在设置闹钟,并且每隔一小时我希望我的应用在设备自然睡眠之前显示2分钟。 我发现WakeLock(FULL_LOCK)和KeyguardManager不推荐使用。 我创build了一个WakefulBroadcastReceiver和服务,这些工作。 @Override protected void onHandleIntent(Intent intent) { // I need to show the screen here! for (int i=0; i<5; i++) { Log.i("SimpleWakefulReceiver", "Running service " + (i + 1) + "/5 @ " + SystemClock.elapsedRealtime()); try { Thread.sleep(5000); } catch (InterruptedException e) { } } Log.i("SimpleWakefulReceiver", "Completed service @ " + SystemClock.elapsedRealtime()); […]

在Android上closures屏幕

我正试图在某个动作发生后打开和closures显示器(让我们只是担心现在closures屏幕)。 从我从wake lock所了解到的,这就是我所拥有的: PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag"); 当我读到其他post在stackoverflow和其他地方,他们似乎告诉我,PARTIAL_WAKE_LOCK将closures屏幕。 但是,如果我阅读SDK说,它只会允许屏幕closures。 所以我认为这是不对的。 任何提示将有所帮助! 谢谢, 麦克风

如何使android设备始终处于唤醒模式?

设备成功后, 现在,我需要使设备始终处于唤醒状态,即始终可见的用户界面,没有黑屏或任何白日梦屏幕。 要做到这一点,我认为我必须完成以下任务: 没有locking屏幕 – closures 睡眠设置为“从不” 白日梦设置为“closures” 我发现的全是应用层,也就是说有一些应用可以完成上面的任务。 但是,由于我的手机是根植的,我想用系统文件来实现,即使其他一些应用程序试图改变上面的function,他们也不应该这样做。