我编写了一个禁用 Android 锁定屏幕并让屏幕从待机状态打开的方法(用于拨号)。此方法可正常工作 30 秒,但随后会触发短暂闪烁的待机屏幕。这会触发 onPause、onStop、onResume。这不应该发生。哪个标志不正确?实现必须从最新的 Android 版本到 API 19。
此错误仅发生在 < 8.0="" 的="" android="">
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
disableLockScreen(this)
setContentView(R.layout.activity_main)
Log.i("AppLifecycleTest", "onCreate")
}
override fun onResume() {
super.onResume()
Log.i("AppLifecycleTest", "onResume")
}
override fun onPause() {
super.onPause()
Log.i("AppLifecycleTest", "onPause")
}
override fun onStop() {
super.onStop()
Log.i("AppLifecycleTest", "onStop")
}
override fun onDestroy() {
super.onDestroy()
Log.i("AppLifecycleTest", "onDestroy")
}
@Suppress("DEPRECATION")
private fun disableLockScreen(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
activity.setShowWhenLocked(true)
activity.setTurnScreenOn(true)
}
val lock =
(activity.getSystemService(Activity.KEYGUARD_SERVICE) as KeyguardManager).newKeyguardLock(Context.KEYGUARD_SERVICE)
val powerManager = activity.getSystemService(Context.POWER_SERVICE) as PowerManager
val wake = powerManager.newWakeLock(
PowerManager.FULL_WAKE_LOCK or
PowerManager.ACQUIRE_CAUSES_WAKEUP or
PowerManager.ON_AFTER_RELEASE,
"SomeAppName:BusSnoozeAlarm"
)
lock.disableKeyguard()
// This timeout doesn't seem to do anything
wake.acquire(6 * 1000L)
activity.window.addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
)
}
启动条件:从内存中删除App并启动,使屏幕处于 Activity 状态。
LGE Nexus 5X:(Android 7.0,API 24)30 秒后屏幕快速闪烁并显示待机菜单,并且切换按钮消失。这会触发 onPause、onStop、onResume。 这不应该发生。
2019-05-07 10:14:40.613 AppLifecycleTest: onCreate
2019-05-07 10:14:40.616 AppLifecycleTest: onResume
2019-05-07 10:15:10.851 AppLifecycleTest: onPause
2019-05-07 10:15:10.891 AppLifecycleTest: onStop
2019-05-07 10:15:10.994 AppLifecycleTest: onResume
Samsung Galaxy S8:(Android 8.0,API 26)30 秒不与屏幕交互后,切换按钮消失,但没有触发应用生命周期,也没有快速闪烁待机屏幕。 这是正确的。
2019-05-07 10:23:22.654 AppLifecycleTest: onCreate
2019-05-07 10:23:22.717 AppLifecycleTest: onResume
This SO thread有同样的问题,onStop 30 秒后触发。
这是我的解决方法,它有效但不符合文档:
// add to onCreate
private fun initTimer() {
timer = Timer()
timer.schedule(25000L) {
activity.runOnUiThread {
disableLockScreen(activity)
initTimer()
Log.i("AppLifecycleTest", "reset every 25 Seconds")
}
}
}
最佳答案
你只需要写在你的 activity_main.xml 文件中,让屏幕一直亮着。
android:keepScreenOn="true"
关于android - 在 Android 7.0 及更低版本上,禁用锁屏 30 秒后不得触发待机屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56003113/
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:
相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
如果我一直输入geminstallrails使用不同版本的Rails会怎样?例如,我可以输入:geminstallrails--verson3.2.10或geminstallrails这给了我版本3.2.12。问题每次安装都会覆盖之前的吗?它会删除所有旧文件并添加我正在安装的新版本吗?或者如果我运行它两次,它会保留一些文件吗?我正在使用Ubuntu。 最佳答案 它将安装两个独立的gem。实际的可执行文件rails将调用最新版本。你可以覆盖它__例如,rails_3.2.10_将执行Rails3.2.10。bundler顺便说一下,如