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

谢谢