【问题标题】:Keep screen on in external applications在外部应用程序中保持屏幕开启
【发布时间】:2021-09-01 16:56:27
【问题描述】:

我想在我的活动生命周期内保持屏幕打开。我们将这个活动称为 A。我通过设置来做到这一点

android:keepScreenOn="true"

在 xml 中。这在大多数屏幕上都能完美运行。但是,Activity A 会启动 Activity B,它会在应用程序的其他部分使用。有没有办法强制 Activity B 在从 Activity A 启动时保持屏幕开启?我读过我应该避免使用唤醒锁;我很好奇其他人对此有何看法。

【问题讨论】:

  • 让活动 B 也使用android:keepScreenOn="true"
  • Activity B 正在我的应用程序的其他地方使用。我只想在从 Activity A 启动时保持屏幕打开。不会改变它使 Activity B 始终保持屏幕打开,即使它是从 Activity C 或其他地方启动的?
  • 啊,好的,现在我明白了!对不起,我今天有点慢。 :-( 使用FLAG_KEEP_SCREEN_ON 的答案应该可以工作。

标签: android xml android-layout android-activity wakelock


【解决方案1】:

您可以通过以下方式以编程方式设置它:

     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

如果您只希望 Activity B 在从 Activity A 启动时保持屏幕开启,您可以这样实现:

当 A 启动 B 时,在 Intent 上发送一个额外的值,在 B 上,onCreate() 检查是否发送了一个值,并且仅当它发现某些东西是因为来自 A 时。

    public class ActivityB extends Activity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);

        Bundle extras = getIntent().getExtras();
        if(extras != null) 
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);    
      }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多