Android 初学者问题:Wakelocks
我对WakeLock的概念不太熟悉,需要你的帮助 问题:Android 初学者问题:Wakelocks,android,wakelock,Android,Wakelock,我对WakeLock的概念不太熟悉,需要你的帮助 问题: 我假设WakeLock是某种类型的锁,当被执行代码持有时,它会阻止设备睡眠。如果设备已经处于睡眠/待机模式,那么代码会执行吗?假设它永远不会获得唤醒锁 当一个长时间运行的任务(abt 7-8秒)在后台线程(AsyncTask)中完成时,我是否应该为保持唤醒锁而烦恼?AsyncTask是否已经为我获取了它 欢迎链接到官方文档和wakelocks的书面文档 谢谢。1.如果手机处于完全睡眠模式,除了来电之外,您还可以使用AlarmManager
谢谢。1.如果手机处于完全睡眠模式,除了来电之外,您还可以使用AlarmManager意图唤醒手机 从类文档中: 报警管理器保持CPU唤醒 锁定只要报警接收器 正在执行onReceive()方法。这 保证手机不会 睡到你处理完为止 广播。一旦接收() 返回,则报警管理器释放 这是尾流锁。这意味着 在某些情况下,手机会尽快入睡 当onReceive()方法完成时。 如果你的闹钟响了 Context.startService(),这是可能的 手机会在开机前休眠 请求的服务已启动。到 防止这种情况,你的广播接收器 服务将需要实现一个 单独的唤醒锁定策略以确保 手机会一直运行到 该服务可用 2.如果您正在使用,您将希望将结果发布到上的UI线程 从文件中: AsyncTask允许正确且轻松地使用UI线程。此类允许在UI线程上执行后台操作和发布结果,而无需操作线程和/或处理程序 3.我建议您阅读官方文档,其中对WakeLock概念有很好的介绍
广播接收器
。实际上,手机会唤醒一秒钟,运行广播接收器的代码,然后再次入睡。由于您不应在广播接收器
中运行长代码(使用它来启动服务
),因此您基本上可以假设您的代码在手机睡眠时从未运行过。当然,如果您使用BroadcastReceiver
启动服务
,通常应获得唤醒锁
AsyncTask
,您实际上不需要担心唤醒锁。手机在运行时不太可能睡眠。我不确定他们是否有唤醒锁,但在运行标准的AsyncTask
任务时让我的手机处于睡眠状态似乎不会中断它基本上,你唯一需要担心WakeLocks的时候是当你期望你的任务会因为睡眠而被打断(就像你设置了一个短时间唤醒手机的闹钟)或者你绝对不能让任务被打断。否则,请确保您优雅地处理任何中断。我也想知道这一点。具体来说,手机在什么情况下会进入睡眠状态?如果我在手机处于唤醒状态时启动一个连续的活动(在我的情况下上载一个文件),那么在我的进程工作时,手机是否有可能睡眠?我的测试表明,您可以使用警报触发服务,因此您根本不需要广播接收器。如果我错了,请有人纠正我(也许它只适用于某些版本的操作系统)。同时,请参阅,以了解有关在设备完成任务之前保持其唤醒状态的服务的讨论。