iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何让Android系统不休眠
  • 911
分享到

如何让Android系统不休眠

2023-06-03 09:06:47 911人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“如何让Android系统不休眠”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何让Android系统不休眠”这篇文章吧。Wake Lock是一种锁的机制, 只要有人拿着

这篇文章主要为大家展示了“如何让Android系统不休眠”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何让Android系统不休眠”这篇文章吧。

Wake Lock是一种的机制, 只要有人拿着这个锁,系统就无法进入休眠,

可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,

超时的锁会在时间过去以后自动解锁. 如果没有锁了或者超时了, 内核就

会启动休眠的那套机制来进入休眠.

1.内核维护了两个链表

1).链表,active_wake_locks[WAKE_LOCK_TYPE_COUNT]

   active_wake_locks[0]维护的是suspend lock.

   active_wake_locks[1]维护的是idle lock.

2).链表,inactive_locks来记录所有处于inactive状态的锁.

 2. 应用申请锁流程

 比如/sys/power/wake_lock 下面的PowerManagerService的生成过程。

1). PowerManager类

Android 提供了现成 android.os.PowerManager 类 ,类中提供 newWakeLock(int flags, String tag)方法来取得相应层次的锁, 此函数的定义 frameworks/base/core/java/android/os/PowerManager.java下面,应用程序在申请wake_lock时都会有调用。

 实例:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl = pm.newWakeLock

          (PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);

 wl.acquire();//申请锁这个里面会调用PowerManagerService里面acquireWakeLock()

wl.release(); //释放锁,显示的释放,如果申请的锁不在此释放系统就不会进入休眠。

2). frameworks层

/frameworks/base/services/java/com/android/server/

 PowerManagerService.java这个类是来管理所有的应用程序申请的wakelock。比如音视频播放器,camera等申请的wakelock都是通过这个类来管理的。static final String PARTIAL_NAME = "PowerManagerService"Power.acquireWakeLock(Power.PARTIAL_WAKE_LOCK,PARTIAL_NAME);这个函数调用Power类里面的acquireWakeLock(),此时的PARTIAL_NAME作为参数传递到底层去。 

/frameworks/base/core/java/android/os/Power.java

public static native void acquireWakeLock(int lock, String id);

注:native申明的方法在Power类中没有实现,其实现体在frameworks/base/core/jni/android_os_Power.cpp中,所以调用Power类的acquireWakeLock()方法时会调用JNI下的实现方法

 3).JNI层的实现

路径:frameworks/base/core/jni/android_os_Power.cpp 

static void acquireWakeLock(JNIEnv *env, jobject clazz, jint lock, jstring idObj)

  {

      const char *id = env->GetStringUTFChars(idObj, NULL);

      acquire_wake_lock(lock, id);

      env->ReleaseStringUTFChars(idObj, id);

  }

注:在acquireWakeLock()中调用了路径下hardware/libhardware_legacy/power/power.c下面 的acquire_wake_lock(lock, id)

4).与kernel层的交互

在power.c下的acquire_wake_lock(lock, id)函数如下:

 int acquire_wake_lock(int lock, const char* id)

 {  

     return write(fd, id, strlen(id));

 }

注: fd就是文件描述符,在此表示”/sys/power/wake_lock” id就是从PowerManagerService类中传下来的参数即: PARTIAL_NAME = "PowerManagerService"到此就是通过文件系统来与kernel层交互的地方

3、示例

不让android进入休眠可以在kernel里加上三行代码。一直保管着这个锁。系统就不会进入休眠。如下:


static struct wake_lock wqf_charge_display_lock; //声明一个锁
wake_lock_init(&wqf_charge_display_lock, WAKE_LOCK_SUSPEND, "wqf_charge_display_lock"); //wqf charge_display_lock 初始化这个锁
wake_lock(&wqf_charge_display_lock);//wqf modify 保管这个锁、这样系统就不会进入休眠


以上是“如何让Android系统不休眠”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何让Android系统不休眠

本文链接: https://www.lsjlt.com/news/233930.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何让Android系统不休眠
    这篇文章主要为大家展示了“如何让Android系统不休眠”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何让Android系统不休眠”这篇文章吧。Wake Lock是一种锁的机制, 只要有人拿着...
    99+
    2023-06-03
  • Win8.1怎么关闭休眠让系统不待机
    我们知道,电脑开机后,如果一段时间没有操作电脑的话,电脑会自动进入睡眠待机状态。但有时候,夜间去睡觉,开着电脑挂游戏或下载电影的时候,是不希望电脑进入待机状态,因为一旦电脑进行睡眠,意味着当前运行的软件也将暂停。 不想让...
    99+
    2023-06-05
    Win8.1 关闭休眠 系统
  • Win10系统中更改休眠时间让休眠时间符合使用习惯
      休眠状况是电脑使用中常见的一种状态,休眠状态既可以使电脑处于无操作的状态,又避免了关机之后还要重新开机的麻烦,对于离开一会不使用电脑,将电脑设置成休眠状态是最好的。   Win10系统中设置休眠时间的操作方法:   ...
    99+
    2023-06-10
    Win10 休眠 时间 系统 更改
  • 解决windows7系统不支持休眠(把休眠找回来)的方法
    最近使用Win7时一直找不到“休眠”按钮。搜索了一番Windows自带的帮助,尽是一些废话,最 消失的“休眠” 如下图,在“开始”菜单的&ldquo...
    99+
    2023-05-30
    win7 休眠 方法 系统 windows7
  • 如何清除Vista系统休眠文件
    这期内容当中小编将会给大家带来有关如何清除Vista系统休眠文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我使用的是windows vista系统,当时给C盘分了10GB,使用几个月后,现在系统总是提...
    99+
    2023-06-14
  • linux系统怎么设置永不休眠
    在Linux系统中,可以通过以下方法设置永不休眠:1. 使用命令行方式:打开终端,输入以下命令:```sudo systemctl ...
    99+
    2023-09-05
    linux
  • win10如何设置不休眠
    要设置Windows 10不休眠,可以按照以下步骤操作:1. 打开“控制面板”,可以在“开始”菜单中搜索并打开。2. 在“控制面板”...
    99+
    2023-09-08
    win10
  • linux如何设置不休眠
    要设置Linux不休眠,可以使用以下方法:1. 命令行方式:打开终端,输入以下命令来禁用休眠功能:```sudo systemctl...
    99+
    2023-09-28
    linux
  • ubuntu系统怎么设置永不休眠
    要在Ubuntu系统上设置永不休眠,可以按照以下步骤进行操作:1. 打开"系统设置",可以在应用程序菜单中找到,也可以使用快捷键"S...
    99+
    2023-08-31
    ubuntu
  • Win7系统屏幕休眠时间如何调
    您可以按照以下步骤调整Win7系统屏幕休眠时间:1. 点击桌面右下角的电源图标。2. 点击“更改电源设置”。3. 在“选择或自定义要...
    99+
    2023-08-22
    Win7
  • win7系统设置显示器常亮不休眠如何关闭
      win7系统设置显示器常亮不休眠如何关闭?当我们将电脑设置了休眠之后,在规定的时候后就会自动休眠,需要使用的时候需要重新唤醒。有的用户觉得唤醒时比较麻烦,想要设置为常亮模式,那么怎么去进行切换,很多小伙伴不知道怎么详细操作,小编下面整理...
    99+
    2023-07-24
  • win7系统如何修改电脑休眠时间
    这篇文章主要为大家展示了“win7系统如何修改电脑休眠时间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win7系统如何修改电脑休眠时间”这篇文章吧。使用鼠标单击桌面上的“开始”按钮,选择“控制...
    99+
    2023-06-28
  • 如何关闭Win8.1系统休眠功能?关闭Win8.1占空间的系统休眠功能方法介绍
      休眠功能是Windows系统提供的一项较为贴心的功能,系统主要就是将内存中的所有数据保存到一个休眠文件中,这个休眠文件也就是增加的休眠数据几乎等同于电脑的全部内存容量。  对于不少普通用户来说很少会用到系统的休眠功能...
    99+
    2023-06-05
    Win8.1 休眠功能 功能 休眠 空间 系统 方法
  • android深度休眠模式如何实现
    Android的深度休眠模式一般是通过以下步骤实现的:1. 进入待机模式:首先,将设备置于待机模式,这可以通过按下电源键或设置中的待...
    99+
    2023-10-20
    android
  • Win8电源选项中没有休眠这一项如何让Win8也能够休眠
      我们都知道,Win8默认的电源选项中是没有休眠这一选项的,即使用Alt+F4打开关闭Windows选项窗口也看不到”休眠“。难道Win8就不能够休眠了吗答案当然不是,我们只要进行一些设置就能让...
    99+
    2023-06-06
    Win8 休眠 电源 选项
  • windows系统怎样为普通的键盘设计一个休眠快捷方式让电脑快速休眠
    今天就跟大家聊聊有关windows系统怎样为普通的键盘设计一个休眠快捷方式让电脑快速休眠,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大家都知道电脑关机可以选择关机和休眠,其中休眠可...
    99+
    2023-06-13
  • win7如何设置显示器不休眠
    这篇文章主要介绍“win7如何设置显示器不休眠”,在日常操作中,相信很多人在win7如何设置显示器不休眠问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7如何设置显示器不休眠”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-01
  • 让Win7系统在休眠状态离线下载的小技巧
        不少的朋友会有在网上下载电影或者大型文件的情况,通常下载都要很长时间,在这个过程中如果我们没有对系统进行任何操作的话,那么系统就会进入休眠状态,那么我们的下载就会自动终止了,那么有没有什么办法...
    99+
    2023-06-07
    Win7系统 休眠状态 离线下载 休眠 状态 离线 系统 技巧
  • win10休眠如何唤醒
    这篇文章主要介绍“win10休眠如何唤醒”,在日常操作中,相信很多人在win10休眠如何唤醒问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10休眠如何唤醒”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-30
  • win11如何禁止休眠
    今天小编给大家分享一下win11如何禁止休眠的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方法一: 首先右键开始菜单,打开“...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作