`
abc20899
  • 浏览: 928839 次
  • 性别: 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 实现让程序一直处于前台

    在Android开发中,保持应用程序始终处于前台运行是一个常见的需求,特别是在音乐播放器、导航应用或者后台服务等场景下。为了实现这一目标,开发者通常会利用服务(Service)和通知(Notification)来配合工作。以下...

    【Android studio】service在app直接退出下,整体输出情况,实现开机自启动,一直后台运行

    在Android开发中,Service是应用程序组件之一,它可以在后台长时间运行,即使用户界面不在活动状态。Service主要用于执行长时间运行的操作,如播放音乐、处理网络事务等。本话题将深入探讨如何在Android Studio中...

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

    要让一个后台服务尽可能地保持运行,开发者需要理解Android系统的服务管理机制,并采取一些策略来应对。 首先,了解服务生命周期是关键。Android服务的生命周期包括`onCreate()`、`onStartCommand()`和`onDestroy()...

    让app一直运行在后台且可以播放有声音乐Demo

    标题"让app一直运行在后台且可以播放有声音乐Demo"指的是创建一个示例应用,该应用能够在后台持续运行,并播放音乐,即使用户切换到其他应用或者锁屏。这种功能在IoT设备上尤其重要,因为这些设备可能需要长时间运行...

    Android程序的退出终于完美解决

    在Android开发中,应用程序的退出机制一直是开发者关注的焦点之一。不同于桌面应用,Android应用通常不会真正“退出”,而是进入后台运行状态,这主要是因为Android系统的资源管理和任务切换机制。然而,在某些场景...

    新版Android开发教程.rar

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

    Android对Linux内核的改造及其影响

    - **目标**:Android的目标是在保留Linux内核通用性和标准化特性的同时,针对移动设备的特点进行必要的定制和优化。 - **使用方式**:遵循标准Linux内核结构的基础上,充分利用现有机制,并尽可能采用标准化的内容...

    (Android and ios) second version

    在移动操作系统领域,iOS和Android一直是两大巨头。随着iOS 5与Android 4.0(Ice Cream Sandwich)的发布,这两款系统之间的竞争再度升级。 - **iOS版本**:苹果的iOS版本始终保持统一,无论是手机还是平板电脑版本...

    Application Security for the Android Platform(android 安全)

    Android操作系统作为全球最受欢迎的智能手机平台之一,其安全性一直是开发者、用户以及研究人员关注的焦点。在Android应用开发过程中,确保应用程序的安全性至关重要,因为这直接影响到用户的隐私保护、数据安全以及...

    android操作系统浏览器安全漏洞

    由于WebView直接运行在应用程序的权限范围内,如果存在安全漏洞,恶意代码可以通过WebView执行,导致用户数据泄露、隐私侵犯甚至整个设备被控制。 论文分析了WebView可能存在的安全风险,例如,不安全的JavaScript...

    Android蓝牙串口通讯(基于service)

    基于Service的蓝牙串口通讯方案可以提供后台运行的能力,使得应用程序即使在主界面关闭后仍能维持与蓝牙设备的连接。下面将详细阐述Android蓝牙通信的基本概念、Service的使用以及如何实现蓝牙串口通信。 首先,...

    Android Support Library介绍.docx

    Android 自问世以来,一直保持着较快的迭代速度,新版本的推出旨在优化用户体验并引入更多先进的功能。然而,作为一款面向大众市场的移动操作系统,Android 必须确保其新版本能够良好地兼容已有的应用程序。为了实现...

    Android内存泄漏详解专栏

    这类内存区域在程序编译阶段就已分配,并在整个程序运行周期中保持不变。 2. **栈式分配**:用于存储方法体内的局部变量。当方法执行开始时,局部变量会在栈上创建;方法执行完毕后,这些变量所占用的内存将被自动...

    android解决OOM

    在Android开发中,"OOM"(Out of Memory)是一个常见的问题,它指的是应用程序在运行过程中耗尽了可用的内存,导致系统无法分配更多的内存资源,从而引发崩溃。为了解决这个问题,开发者需要深入理解Android内存管理...

    Android应用开发攻略.docx编程资料

    - **服务持续运行**:介绍了如何保持服务在后台运行的同时显示其他应用程序的策略。 - **广播消息**:讲解了如何发送和接收广播消息的技术。 - **服务重启**:介绍了如何在设备重启后重新启动服务的方法。 - **...

    android判断软件是否第一次运行的方法

    在Android应用开发中,有时我们需要判断应用程序是否是第一次启动,以便执行特定的初始化操作或向用户提供欢迎界面。这里介绍一种常见的方法,通过使用`SharedPreferences`来实现这一功能。 `SharedPreferences`是...

    android-studio-2021.3.1.17-linux.tar.gz

    Android Studio作为谷歌官方推荐的Android应用程序开发集成开发环境(IDE),一直以来都是开发者的重要工具。本文将详细介绍Android Studio的最新版本——Android Studio Dolphin 2021.3.1.17 Linux版,针对64位...

Global site tag (gtag.js) - Google Analytics