- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有与此类似的帖子,但没有一个是我要找的。我想更改特定 Activity 的屏幕超时。我想尽可能避免使用 WakeLock,并且我不想更改设备的系统范围超时延迟设置。
除了手动跟踪用户 Activity 和使用唤醒锁之外,还有什么方法可以做到这一点吗?
=----=
澄清:例如,如何将屏幕不活动超时(没有输入后屏幕关闭所需的时间)设置为某个值,例如 3 分钟?
可以通过设置系统设置来做到这一点,但这会影响整个设备(即使在应用程序关闭后),所以这不是一个好的解决方案。
谢谢!
最佳答案
首先,请注意更改系统设置以增加 Activity 的超时时间。直觉上我不喜欢这种方法,因为您要进行系统范围的更改只是为了适应您的应用程序。此外,当以这种方式更改系统设置时,很难保证您能够将其设置回来(即您忘记将其设置回来/您的应用程序在您设置之前崩溃)。
解决方案的快速总结:
现在,进入代码:
private ViewGroup mActivityTopLevelView;
private static final int DISABLE_KEEP_SCREEN_ON = 0;
private static final int SCREEN_ON_TIME_MS = 1000*60*3;
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
setScreenOn(true);
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
setScreenOn(false);
}
@Override
public void onUserInteraction() {
super.onUserInteraction();
Log.d(TAG, "onUserInteraction");
setScreenOn(true);
}
private void setScreenOn(boolean enabled)
{
// Remove any previous delayed messages
Log.d(TAG, "setScreenOn to " + enabled);
mHandler.removeMessages(DISABLE_KEEP_SCREEN_ON);
if( enabled )
{
// Send a new delayed message to disable the screen on
// NOTE: After we call setKeepScreenOn(false) the screen will still stay on for
// the system SCREEN_OFF_TIMEOUT. Thus, we subtract it out from our desired time.
int systemScreenTimeout = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 0);
int totalDelay = SCREEN_ON_TIME_MS - systemScreenTimeout;
if( totalDelay > 0 )
{
mActivityTopLevelView.setKeepScreenOn(true);
Log.d(TAG, "Send delayed msg DISABLE_KEEP_SCREEN_ON with delay " + totalDelay);
mHandler.sendEmptyMessageDelayed(DISABLE_KEEP_SCREEN_ON, totalDelay);
}
}
else
{
mActivityTopLevelView.setKeepScreenOn(false);
}
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == DISABLE_KEEP_SCREEN_ON)
{
setScreenOn(false);
}
}
};
在 Android 5.1.0 上测试。
关于android - 特定 Android Activity 的屏幕超时时间更长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21767536/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!