簡體   English   中英

使用部分喚醒鎖關閉屏幕時阻止應用程序進入OnPause

[英]Prevent app from going on OnPause when turning screen off using partial wakelock

我正在嘗試在屏幕關閉的情況下按下音量上/下按鈕,但是盡管獲得了喚醒鎖,但在按下鎖定按鈕時應用程序仍不會停留在前台。 我在OnPause方法中有一個斷點,當屏幕關閉時會被打斷,我可以使用以下命令通過ADB終端確認喚醒鎖已打開:

adb shell dumpsys power

我忽略了音量按鈕事件,因為它們不相關,但是在屏幕打開時它們確實起作用。 我不知道自己缺少什么,也許我誤會了喚醒鎖的行為方式?

我正在Android 6.0模擬器和Android 7.1.2實體電話中對其進行測試。 在此先感謝您的幫助。

Button getLockBtn;

PowerManager _powerManager;
PowerManager.WakeLock _wakeLock;


protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    RequestWindowFeature(WindowFeatures.NoTitle);
    SetContentView(Resource.Layout.Main);

    getLockBtn = FindViewById<Button>(Resource.Id.GetLockBtn);

    _powerManager = (PowerManager)GetSystemService(PowerService);
    _wakeLock = _powerManager.NewWakeLock(WakeLockFlags.Partial, "MyTag");

    getLockBtn.Click += (s, e) =>
    {
        if (_wakeLock.IsHeld)
        {
            _wakeLock.Release();
            getLockBtn.Text = "Get lock";
            //Remove the notification
        }
        else
        {
            //Here I show a notification
            _wakeLock.Acquire();
            getLockBtn.Text = "Release lock";
        }
    };
}

那么像Google Maps這樣的應用如何實現這種行為

屏幕鎖定后,音量控件來自系統,而不是時候應用控件本身.Google Maps對該音量不執行任何操作。

您的問題可能不是在鎖定屏幕下使用音量按鈕,但是在鎖定屏幕時該程序仍然可以工作。

如果您希望任務繼續運行,即使您的活動處於非活動狀態,則也需要使用服務。 https://developer.android.com/guide/components/services.html 還可以和一個通知在鎖定屏幕上顯示某些內容。 https://developer.android.com/guide/topics/ui/notifiers/notifications.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM