Update QS tile states after unlocking

So the visibility state is up-to-date when we do a two-finger
expansion gesture, so the height is correct. Also fixes flickering
when overscrolling the initial panel expansion.

Also set thread priority of QS handler thread to background priority,
so it doesn't eat away precious cycles during animations.

Bug: 18183633
Change-Id: I0609509484582d82f0dc307eb2535bc3711b30e3
This commit is contained in:
Jorim Jaggi
2014-11-03 16:18:03 +01:00
parent 0bc4917c19
commit 1ecd7cd58e
3 changed files with 10 additions and 2 deletions

View File

@@ -203,7 +203,7 @@ public class QSPanel extends ViewGroup {
}
}
private void refreshAllTiles() {
public void refreshAllTiles() {
for (TileRecord r : mRecords) {
r.tile.refreshState();
}

View File

@@ -3611,6 +3611,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
instantCollapseNotificationPanel();
}
updateKeyguardState(staying, false /* fromShadeLocked */);
// Keyguard state has changed, but QS is not listening anymore. Make sure to update the tile
// visibilities so next time we open the panel we know the correct height already.
if (mQSPanel != null) {
mQSPanel.refreshAllTiles();
}
return staying;
}

View File

@@ -21,6 +21,7 @@ import android.content.Intent;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Process;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
@@ -108,7 +109,8 @@ public class QSTileHost implements QSTile.Host {
mKeyguard = keyguard;
mSecurity = security;
final HandlerThread ht = new HandlerThread(QSTileHost.class.getSimpleName());
final HandlerThread ht = new HandlerThread(QSTileHost.class.getSimpleName(),
Process.THREAD_PRIORITY_BACKGROUND);
ht.start();
mLooper = ht.getLooper();