Android 保持屏幕开启标记在活动之间不起作用
Android keep screen on flag don't work bettween activities
当我有一些计算要做时,我很难在活动之间保持屏幕打开。
情况是这样的,我从activityA到B做一个intent
Intent intentCalculator = new Intent(this, CalculatorActivity.class);
intentCalculator.putExtra(CalculatorActivity.BANK,"20");
intentCalculator.putExtra(CalculatorActivity.DURATION,"365");
startActivity(intentCalculator);
然后 Activity B:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//tool bar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(getResources().getString(R.string.nav_calculator));
//get intent
Intent intent = getIntent();
bank = new BigDecimal(intent.getStringExtra(CalculatorActivity.BANK));
duration = Integer.parseInt(intent.getStringExtra(CalculatorActivity.DURATION));
//load data
loadData();
}
布局"activity_calculator"是一个包含相对布局的协调器布局。 loadData 方法需要很长时间才能从相对布局中填充 table 并导致屏幕关闭。
我已经在创建时将 FLAG_KEEP_SCREEN_ON 和 android:keepScreenOn="true" 放在两个布局上,但我的屏幕一直关闭。
我不知道我做错了什么,请我需要一些帮助。
感谢关注,
最好的问候
尝试使用更多标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
如果问题仍然存在,请尝试使用
将 android:keepScreenOn="true"
属性设置为 activity 布局的根视图
另一种方法是通过以下方式获取和释放唤醒锁以保持屏幕开启:
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
权限授予:
<uses-permission android:name="android.permission.WAKE_LOCK" />
更多详情请访问:http://developer.android.com/training/scheduling/wakelock.html
谢谢
当我有一些计算要做时,我很难在活动之间保持屏幕打开。
情况是这样的,我从activityA到B做一个intent
Intent intentCalculator = new Intent(this, CalculatorActivity.class);
intentCalculator.putExtra(CalculatorActivity.BANK,"20");
intentCalculator.putExtra(CalculatorActivity.DURATION,"365");
startActivity(intentCalculator);
然后 Activity B:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//tool bar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(getResources().getString(R.string.nav_calculator));
//get intent
Intent intent = getIntent();
bank = new BigDecimal(intent.getStringExtra(CalculatorActivity.BANK));
duration = Integer.parseInt(intent.getStringExtra(CalculatorActivity.DURATION));
//load data
loadData();
}
布局"activity_calculator"是一个包含相对布局的协调器布局。 loadData 方法需要很长时间才能从相对布局中填充 table 并导致屏幕关闭。
我已经在创建时将 FLAG_KEEP_SCREEN_ON 和 android:keepScreenOn="true" 放在两个布局上,但我的屏幕一直关闭。
我不知道我做错了什么,请我需要一些帮助。
感谢关注, 最好的问候
尝试使用更多标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
如果问题仍然存在,请尝试使用
将 android:keepScreenOn="true"
属性设置为 activity 布局的根视图
另一种方法是通过以下方式获取和释放唤醒锁以保持屏幕开启:
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
权限授予:
<uses-permission android:name="android.permission.WAKE_LOCK" />
更多详情请访问:http://developer.android.com/training/scheduling/wakelock.html
谢谢