Fixing issue with screen pinning screen not showing for secondary users.

- Catch the exception when removing a view that is not yet attached. 
  This is not an issue because we are in the process of attaching it for
  the first time anyways.
- Ensure that we post the calls from the secondary user in the main 
  thread for the system user.  Especially since this calls through to
  add the view for the new screen pinning window.

Bug: 29341417
Change-Id: If0e29a77ddb67426115f1d5d9f1adb580a1f07df
This commit is contained in:
Winson
2016-06-15 12:31:03 -07:00
parent 8e3a16ad91
commit 7555f335f4
2 changed files with 13 additions and 3 deletions

View File

@@ -30,6 +30,7 @@ import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.DockedTopTaskEvent;
import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent;
import com.android.systemui.recents.events.ui.RecentsDrawnEvent;
import com.android.systemui.recents.misc.ForegroundThread;
/**
* An implementation of the system user's Recents interface to be called remotely by secondary
@@ -78,12 +79,16 @@ public class RecentsSystemUser extends IRecentsSystemUserCallbacks.Stub {
@Override
public void updateRecentsVisibility(boolean visible) {
mImpl.onVisibilityChanged(mContext, visible);
ForegroundThread.getHandler().post(() -> {
mImpl.onVisibilityChanged(mContext, visible);
});
}
@Override
public void startScreenPinning(int taskId) {
mImpl.onStartScreenPinning(mContext, taskId);
ForegroundThread.getHandler().post(() -> {
mImpl.onStartScreenPinning(mContext, taskId);
});
}
@Override

View File

@@ -72,7 +72,12 @@ public class ScreenPinningRequest implements View.OnClickListener {
}
public void showPrompt(int taskId, boolean allowCancel) {
clearPrompt();
try {
clearPrompt();
} catch (IllegalArgumentException e) {
// If the call to show the prompt fails due to the request window not already being
// attached, then just ignore the error since we will be re-adding it below.
}
this.taskId = taskId;