xamarin/xamarin.forms 在锁屏电源唤醒时保持后台运行

PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
ACQUIRE_CAUSES_WAKEUP:强制使屏幕亮起,这种锁主要针对一些必须通知用户的操作.
ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间**

方法(一)

 1 [BroadcastReceiver(Enabled = true)]
 2     public class AlarmService : BroadcastReceiver
 3     {
 4         //public event EventHandler WakeLockStatusChanged;
 5         public override void OnReceive(Context context, Intent intent)
 6         {
 7             PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
 8             PowerManager.WakeLock wl = pm.NewWakeLock(WakeLockFlags.Partial, "MyWakelockTag");
 9             wl.Acquire();
10             //if (wl.IsHeld)
11             //{
12             //    wl.Release();
13             //}
14         }
15     }
 1  private void InitBroadcastReceiver()
 2         {
 3             _alarmService = new AlarmService();
 4             Application.Context.RegisterReceiver(_alarmService, new IntentFilter(ConnectivityManager.ConnectivityAction));
 5         }
 6
 7  protected override void OnStart()
 8         {
 9             base.OnStart();
10             InitBroadcastReceiver();
11         }
12
13         protected override void OnStop()
14         {
15             base.OnStop();
16
17             if (_alarmService != null)
18             {
19                 Application.Context.UnregisterReceiver(_alarmService);
20                 _alarmService = null;
21             }
22
23         }

方法(二)

 1    //获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
 2         private void AcquireWakeLock()
 3         {
 4             if (null == _wakeLock)
 5             {
 6                 PowerManager pm = (PowerManager)GetSystemService(Context.PowerService);
 7                 _wakeLock = pm.NewWakeLock(WakeLockFlags.Partial | WakeLockFlags.OnAfterRelease, "MyWakelockTag");
 8                 if (_wakeLock != null)
 9                 {
10                     _wakeLock.Acquire();
11                 }
12             }
13         }
14
15         //释放设备电源锁
16         private void ReleaseWakeLock()
17         {
18             if (null != _wakeLock || _wakeLock.IsHeld)
19             {
20                 _wakeLock.Release();
21                 _wakeLock = null;
22             }
23         }  

参考资料:
https://docs.microsoft.com/zh-cn/dotnet/api/Android.OS.PowerManager.NewWakeLock?view=xamarin-android-sdk-9#Android_OS_PowerManager_NewWakeLock_Android_OS_WakeLockFlags_System_String_

https://stackoverflow.com/questions/54532221/prevent-app-from-going-on-onpause-when-turning-screen-off-using-partial-wakelock/54548392?r=SearchResults#54548392

http://www.itgo.me/a/x9010099145016859770/xamarin-forms-broadcast-receiver-not-working-when-app-is-closed

原文地址:https://www.cnblogs.com/mschen/p/11294665.html

时间: 2024-08-24 17:53:06

xamarin/xamarin.forms 在锁屏电源唤醒时保持后台运行的相关文章

手机锁屏js倒计时停止问题解决办法探索

如图,有这么个需求,测试人员在测试过程中提了一个bug,手机锁屏再唤醒倒计时时间没有更新,仍从锁屏的时间继续,于是开始寻找解决之法 经了解得知,锁屏时候,浏览器的一切活动会停止运行,那么js也无法幸免,这时候就想到有没有能监听浏览器活动停止的方法呢?一查,果然有 visibilitychange 具体可参看https://www.css88.com/archives/6103, 重要的就是给window加一个visibilitychange监听,在里面判断document.tVisibility

安卓开发之动态注册广播(锁屏和解锁案例)

package com.lidaochen.test001; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivit

android 锁屏程序开发

参考http://blog.csdn.net/wdaming1986/article/details/8837023 锁屏程序的步骤如下: 1.替换系统锁屏 2.屏蔽Home键,back键.menu键 3.锁屏程序不出现在最近任务列表中 4.屏幕唤醒时显示锁屏界面 一.替换系统锁屏 调研市场绝大部分锁屏程序,会引导用户关闭系统锁屏.当用户不关闭系统锁屏的时候我们可以将我们自定义的锁屏程序覆盖在系统锁屏程序上,解锁系统锁屏. 具体做法如下: api level 小于13时: mKeyguardMa

仿 惠锁屏 侧滑锁屏的原理

上面是效果图. 锁屏 总体来说 注意的地方 就两点  一个是  关闭电源 重启 的时候 保证  锁屏界面可以出现, 另一个就是  按home键的时候 不要返回 桌面. 对于  唤醒 电源键  和重启手机时候 弹出锁屏界面 ,可以通过监听 电源 唤醒的 广播,开机广播. 1) 待机: 广播消息:android.intent.action.SCREEN_OFF 2) 唤醒: 广播消息:android.intent.action.SCREEN_ON  3) 开机 广播消息:android.intent

android开发技巧——仿新版QQ锁屏下弹窗(转)

新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1,使用Activity,而不是View QQ的弹窗一开始我以为是悬浮View,用WindowManager去添加,但是无论如何就是不显示,后来在朋友提示下换成Activity来实现,在锁屏状态下就能弹窗了. 2.Activity的设置 Activity需要进行以下设置,才可以在锁屏状态下弹窗. 首先是onCreate方法,需要添加

Android5.1 - 锁屏界面时间显示

[问题]待机唤醒解锁界面时间显示不全.不论是8寸还是7寸的屏幕都有此问题.时间显示设置为“上午10:30”的时候,最右边的数字0残缺.而时间数字少于4个时,数字不会残缺. [debug]找到相关的配置文件,把文字的大小修改为合适的值即可.在frameworks/base/packages下有2个目录,分别是Keyguard和SystemUI. 查看SystemUI的Android.mk文件LOCAL_STATIC_JAVA_LIBRARIES := Keyguard android-suppor

“重力锁屏”正式版使用说明

(此版本和beta版无太大差异,只是在其基础上做了一些优化和小的改进) 一.产品介绍 重力锁屏是基于android系统的一款锁屏软件.它利用重力感应器来判断用户的动作从而自动锁屏亮屏,是锁屏软件的一大创新.相比传统的锁屏软件,“重力锁屏”从可操作性.方便性.功能全面性都有了很大的提升,可以让用户方便快捷的进行锁屏操作. 二.主要特色 (1)调用重力传感器,解放电源键.“重力锁屏”软件调用重力传感器,根据用户翻扣手机或手机朝下的运动状态,实现手机的亮.暗屏.解放手机电源键,延长其使用寿命.并且重力

实现:编辑短信,按power键锁屏后,再点亮屏幕,进入的还是编辑短信界面,按返回键才会进入解锁界面。

描述:在编辑短信界面按电源键锁屏后,重新按电源键点亮屏幕,并没有进入到锁屏界面而是在编辑短信界面,此时短信界面悬浮与锁屏界面之上,这时按返回键关闭编辑短信界面,回到锁屏界面,是如何实现的呢,只需要在需要实现该功能的界面(Activity)中的onCreate()方法中setContentView()方法之前添加以下代码: // set this flag so this activity will stay in front of the keyguard int flags = WindowM

BroadcastReceiver之实现锁屏、解锁样例

好久没有写android的小样例了,因为前几天写了一篇关于Intent.Action的文章(http://blog.csdn.net/ljphhj/article/details/38796739).有朋友私信问我关于ACTION_SCREEN_ON和ACTION_SCREEN_OFF还有ACTION_USER_PRESENT三个Action的使用方法,因为作为一个总结博文,当时并没有具体讲,ACTION_SCREEN_ON和ACTION_SCREEN_OFF仅仅能通过动态注冊的方式(代码内co