" am stop-user <USER_ID>\n" +
" am stack create <TASK_ID> <RELATIVE_STACK_ID> <POSITION> <WEIGHT>\n" +
" am stack movetask <STACK_ID> <TASK_ID> [true|false]\n" +
- " am stack resize <STACK_ID> <WEIGHT>\n" +
" am stack dump\n" +
"\n" +
"am start: start an Activity. Options are:\n" +
"am stack movetask: move <TASK_ID> from its current stack to the top (true) or" +
" bottom (false) of <STACK_ID>.\n" +
"\n" +
- "am stack resize: change <STACK_ID> relative size to new <WEIGHT>.\n" +
- "\n" +
"am stack dump: list the hierarchy of stacks.\n" +
"\n" +
"<INTENT> specifications include these flags and arguments:\n" +
runStackCreate();
} else if (op.equals("movetask")) {
runStackMoveTask();
- } else if (op.equals("resize")) {
- runStackResize();
} else if (op.equals("dump")) {
runStackDump();
} else {
}
}
- private void runStackResize() throws Exception {
- String stackIdStr = nextArgRequired();
- int stackId = Integer.valueOf(stackIdStr);
- String weightStr = nextArgRequired();
- float weight = Float.valueOf(weightStr);
-
- try {
- mAm.resizeStack(stackId, weight);
- } catch (RemoteException e) {
- }
- }
-
private void runStackDump() throws Exception {
try {
List<ActivityManager.StackInfo> stacks = mAm.getStacks();
@Override
public void moveTaskToStack(int taskId, int stackId, boolean toTop) {
- if (stackId == HOME_STACK_ID) {
- Slog.e(TAG, "moveTaskToStack: Attempt to move task to home stack",
- new RuntimeException("here").fillInStackTrace());
- return;
- }
synchronized (this) {
mWindowManager.moveTaskToStack(taskId, stackId, toTop);
mStackSupervisor.moveTaskToStack(taskId, stackId, toTop);
final void sendPendingThumbnail(ActivityRecord r, IBinder token,
Bitmap thumbnail, CharSequence description, boolean always) {
- TaskRecord task;
- ArrayList<PendingThumbnailsRecord> receivers = null;
+ TaskRecord task = null;
+ ArrayList receivers = null;
//System.out.println("Send pending thumbnail: " + r);
int N = mPendingThumbnails.size();
int i=0;
while (i<N) {
- PendingThumbnailsRecord pr = mPendingThumbnails.get(i);
+ PendingThumbnailsRecord pr =
+ (PendingThumbnailsRecord)mPendingThumbnails.get(i);
//System.out.println("Looking in " + pr.pendingRecords);
if (pr.pendingRecords.remove(r)) {
if (receivers == null) {
- receivers = new ArrayList<PendingThumbnailsRecord>();
+ receivers = new ArrayList();
}
receivers.add(pr);
if (pr.pendingRecords.size() == 0) {
final int N = receivers.size();
for (int i=0; i<N; i++) {
try {
- PendingThumbnailsRecord pr = receivers.get(i);
+ PendingThumbnailsRecord pr =
+ (PendingThumbnailsRecord)receivers.get(i);
pr.receiver.newThumbnail(
task != null ? task.taskId : -1, thumbnail, description);
if (pr.finished) {
final int stackId = stack.mStackId;
final int nextStackId = mWindowManager.removeStack(stackId);
// TODO: Perhaps we need to let the ActivityManager determine the next focus...
- if (getFocusedStack().mStackId == stackId) {
+ if (mFocusedStack.mStackId == stackId) {
mFocusedStack = nextStackId == HOME_STACK_ID ? null : getStack(nextStackId);
}
}
mStackState = STACK_STATE_HOME_TO_FRONT;
}
} else {
- if (r.task.stack == mHomeStack) {
- // Try to correct, but how did we get here?
- Slog.e(TAG, "!!! setFocusedStack: home stack used for non-home activity !!!",
- new RuntimeException("here").fillInStackTrace());
- moveTaskToStack(r.task.taskId, getCorrectStack(r).mStackId, true);
- // r.task.stack has now changed.
- }
mFocusedStack = r.task.stack;
if (mStackState != STACK_STATE_HOME_IN_BACK) {
mStackState = STACK_STATE_HOME_TO_BACK;
// This not being started from an existing activity, and not part
// of a new task... just put it in the top task, though these days
// this case should never happen.
- targetStack = getCorrectStack(r);
+ ActivityStack lastStack = getLastStack();
+ targetStack = lastStack != null ? lastStack : mHomeStack;
moveHomeStack(targetStack.isHomeStack());
- ActivityRecord prev = targetStack.topActivity();
+ ActivityRecord prev = lastStack == null ? null : targetStack.topActivity();
r.setTask(prev != null ? prev.task
: targetStack.createTaskRecord(getNextTaskId(), r.info, intent, true),
null, true);