Merge "Add delay to notifications before they can be dismissed."

This commit is contained in:
Aaron Heuckroth
2018-06-18 18:22:14 +00:00
committed by Android (Google) Code Review
4 changed files with 25 additions and 5 deletions

View File

@@ -37,6 +37,7 @@ import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.SystemClock;
import android.os.Bundle;
import android.service.notification.StatusBarNotification;
import android.util.ArraySet;
@@ -992,6 +993,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mEntry.setInitializationTime(SystemClock.elapsedRealtime());
Dependency.get(PluginManager.class).addPluginListener(this,
NotificationMenuRowPlugin.class, false /* Allow multiple */);
}

View File

@@ -84,6 +84,7 @@ public class NotificationData {
public static final class Entry {
private static final long LAUNCH_COOLDOWN = 2000;
private static final long REMOTE_INPUT_COOLDOWN = 500;
private static final long INITIALIZATION_DELAY = 400;
private static final long NOT_LAUNCHED_YET = -LAUNCH_COOLDOWN;
private static final int COLOR_INVALID = 1;
public String key;
@@ -114,6 +115,9 @@ public class NotificationData {
public ArraySet<Integer> mActiveAppOps = new ArraySet<>(3);
public CharSequence headsUpStatusBarText;
public CharSequence headsUpStatusBarTextPublic;
private long initializationTime = -1;
/**
* Whether or not this row represents a system notification. Note that if this is
* {@code null}, that means we were either unable to retrieve the info or have yet to
@@ -169,6 +173,11 @@ public class NotificationData {
return SystemClock.elapsedRealtime() < lastRemoteInputSent + REMOTE_INPUT_COOLDOWN;
}
public boolean hasFinishedInitialization() {
return initializationTime == -1 ||
SystemClock.elapsedRealtime() > initializationTime + INITIALIZATION_DELAY;
}
/**
* Create the icons for a notification
* @param context the context to create the icons with
@@ -341,6 +350,12 @@ public class NotificationData {
}
return false;
}
public void setInitializationTime(long time) {
if (initializationTime == -1) {
initializationTime = time;
}
}
}
private final ArrayMap<String, Entry> mEntries = new ArrayMap<>();

View File

@@ -4715,10 +4715,13 @@ public class NotificationStackScrollLayout extends ViewGroup
if (currView instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) currView;
mCurrMenuRow = row.createMenu();
mCurrMenuRow.setSwipeActionHelper(NotificationSwipeHelper.this);
mCurrMenuRow.setMenuClickListener(NotificationStackScrollLayout.this);
mCurrMenuRow.onTouchEvent(currView, ev, 0 /* velocity */);
if (row.getEntry().hasFinishedInitialization()) {
mCurrMenuRow = row.createMenu();
mCurrMenuRow.setSwipeActionHelper(NotificationSwipeHelper.this);
mCurrMenuRow.setMenuClickListener(NotificationStackScrollLayout.this);
mCurrMenuRow.onTouchEvent(currView, ev, 0 /* velocity */);
}
}
}

View File

@@ -178,7 +178,7 @@ public class StackScrollAlgorithm {
return false;
}
ExpandableNotificationRow row = (ExpandableNotificationRow) v;
if (row.areGutsExposed()) {
if (row.areGutsExposed() || !row.getEntry().hasFinishedInitialization()) {
return false;
}
return row.canViewBeDismissed();