`
abc20899
  • 浏览: 909001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android如何保持程序一直运行

阅读更多
在正常情况下,Android系统会让程序和服务进入休眠状态以节约电量使用。然而在开发Android程序时,有时候在程序运行的时候,不能让系统休眠,否则有一些运行会停止,因此我们需要设置禁止休眠。

Android中设置禁止休眠有两种方式:

1. 在View中设置FLAG_KEEP_SCREEN_ON。

实现上可以在代码中设置,也可以在XML文件中设置。

代码如下所示:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

或者配置文件对该View设置:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
android:keepScreenOn="true"
android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">

这样可以保持当前View所在的Activity一直在活动状态运行,而且屏幕是高亮的。非常耗电!!

2.通过PowerManager来精细控制。

首先在Manifest.xml文件里面用user-permission声明

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER" />

之后通过PowerManager服务来获取电量控制锁:

  private void acquireWakeLock() {      
  if (wakeLock == null) {        
   PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);    
   wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getCanonicalName());
   wakeLock.acquire();    
   }  
  }

关键代码在newWakeLock的第一个参数,可以有:



Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright



*PARTIAL_WAKE_LOCK参数和其他不同,如果选择了这个参数,那即时用户按了关机键,CPU仍保持运行;而其他参数在用户按了关机键之后,CPU即停止运行,如果不按关机键,系统在过一段时间休眠后,CPU仍保持运行。

在程序退出时,必须释放WakeLock:

private void releaseWakeLock() {    
  if (wakeLock != null && wakeLock.isHeld()) {     
   wakeLock.release();     
   wakeLock = null;  
   }
}

这两个方法分别在OnCreate/OnDestroy或者OnResume/OnPause中调用。
分享到:
评论
1 楼 fykyx521 2013-03-21  
请求锁是在 oncreate 释放实在ondestroy??

屏幕休眠 是调用onpause吗

相关推荐

    android 实现让程序一直处于前台

    实现让自己的程序APP一直处于前台,当APP不在前台自动回到前台显示

    android后台服务运行保持不被干掉。.rar

    android后台服务运行保持不被干掉。.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    android 后台服务运行,保持不被干掉

    android 后台服务运行,保持不被干掉

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    SignalMap:显示您所在区域的覆盖率地图的Android应用程序

    只要在前台堆叠,应用程序屏幕就会一直保持打开状态。 请注意,当应用程序仍在运行时,它仍可在后台运行。 此限制取决于通常由制造商实施驱动程序的方式。 配置 在AndroidManifest.xml中更改GOOGLE_AP

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文和在...

    Fragment+ActionBar

    Action Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:突出显示一些重要操作、在程序中保持统一的页面导航和切换方式、将使用频率低的功能放在Action overflow中,...

    wakelock:Flutter插件,可让您保持设备屏幕处于唤醒状态,即通过打开或关闭设备的唤醒锁来防止屏幕进入Hibernate状态。 适用于Android,iOS,macOS和Web

    此外,Android和iOS实现可在主程序包中找到,而Web实现则在。 此仓库中的软件包如下: 包裹 实作 主插件包+ Android和iOS实现 macOS实施 基本的API定义和消息处理 网络实施 贡献 如果您想为这个插件,请遵循...

    Clean_Master_VIP_v7.4.8.apk

    电池保护程序使用电池保护程序,只需1次点击即可分析电池状态并休眠运行中的应用程序,以节省电量,延长电池寿命。 ☆iSWIPE iSwipe使您可以快速访问其他应用程序和工具,而不必返回主屏幕。 ☆APP MANAGER ...

    不断保持后台唤醒的

    不断保持后台唤醒的源码安装之后就能不断的唤醒,实现后台service持续运行,并且唤醒之后进入自定义界面,4.2.2测试唤醒的时候程序可以直接绕过屏幕锁但是点一下还是会出现锁屏界面。实现了开机自动启动,还有保持...

    java安卓开发外卖订餐系统课程设计.doc

    系统的数据都存储 在服务器的数据库中,定时备份可以使数据一直保持完好。 方便查询,节省劳动力。用户可以通过手机直接把自己想要订的外卖存入数据库中,商 店的服务器端只需要少数管理人员来处理订单。 用户可以...

    trackdev_web:网路专案

    它是使用react , react-native和react-native-web ,以便在React Web应用程序和React Native应用程序之间共享应用程序逻辑,同时保持每个平台唯一的独立组件呈现。 有关此项目的详细讨论,请阅读我的。 使用的...

    realm-java:Realm是一个移动数据库:SQLite和ORM的替代品

    此外,我们一直在努力将:我们的大多数用户都直观地选择了它,并在几分钟内启动并运行了简单的应用程序。 现代: Realm支持简单的线程安全性,关系和加密。 快速:在保持非常丰富的功能集的同时,Realm在常规操作...

Global site tag (gtag.js) - Google Analytics