Merge branch 'master' of https://github.com/mateor/auto-patcher
[auto-patcher.git] / patches / pdroid / 4.1 / provisionals / system / framework / services.jar.out / smali / com / android / server / am / ActivityManagerService.smali
blob19843f4b14f08b5ddd4b93b4424dba6b9e66d2d5
1 .class public final Lcom/android/server/am/ActivityManagerService;
2 .super Landroid/app/ActivityManagerNative;
3 .source "ActivityManagerService.java"
5 # interfaces
6 .implements Lcom/android/server/Watchdog$Monitor;
7 .implements Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;
10 # annotations
11 .annotation system Ldalvik/annotation/MemberClasses;
12     value = {
13         Lcom/android/server/am/ActivityManagerService$ServiceMap;,
14         Lcom/android/server/am/ActivityManagerService$ServiceRestarter;,
15         Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;,
16         Lcom/android/server/am/ActivityManagerService$MemItem;,
17         Lcom/android/server/am/ActivityManagerService$ItemMatcher;,
18         Lcom/android/server/am/ActivityManagerService$NeededUriGrants;,
19         Lcom/android/server/am/ActivityManagerService$PermissionController;,
20         Lcom/android/server/am/ActivityManagerService$CpuBinder;,
21         Lcom/android/server/am/ActivityManagerService$DbBinder;,
22         Lcom/android/server/am/ActivityManagerService$GraphicsBinder;,
23         Lcom/android/server/am/ActivityManagerService$MemBinder;,
24         Lcom/android/server/am/ActivityManagerService$AThread;,
25         Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;,
26         Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;,
27         Lcom/android/server/am/ActivityManagerService$Identity;,
28         Lcom/android/server/am/ActivityManagerService$ForegroundToken;,
29         Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;
30     }
31 .end annotation
34 # static fields
35 .field static final APP_SWITCH_DELAY_TIME:J = 0x1388L
37 .field static final BATTERY_STATS_TIME:J = 0x1b7740L
39 .field static final BROADCAST_BG_TIMEOUT:I = 0xea60
41 .field static final BROADCAST_FG_TIMEOUT:I = 0x2710
43 .field static final CANCEL_HEAVY_NOTIFICATION_MSG:I = 0x19
45 .field static final CHECK_EXCESSIVE_WAKE_LOCKS_MSG:I = 0x1b
47 .field static final CLEAR_DNS_CACHE:I = 0x1c
49 .field static final CPU_MIN_CHECK_DURATION:I = 0x493e0
51 .field static final DEBUG:Z = false
53 .field static final DEBUG_BACKGROUND_BROADCAST:Z = false
55 .field static final DEBUG_BACKUP:Z = false
57 .field static final DEBUG_BROADCAST:Z = false
59 .field static final DEBUG_BROADCAST_LIGHT:Z = false
61 .field static final DEBUG_CONFIGURATION:Z = false
63 .field static final DEBUG_MU:Z = false
65 .field static final DEBUG_OOM_ADJ:Z = false
67 .field static final DEBUG_PAUSE:Z = false
69 .field static final DEBUG_POWER:Z = false
71 .field static final DEBUG_POWER_QUICK:Z = false
73 .field static final DEBUG_PROCESSES:Z = false
75 .field static final DEBUG_PROCESS_OBSERVERS:Z = false
77 .field static final DEBUG_PROVIDER:Z = false
79 .field static final DEBUG_RESULTS:Z = false
81 .field static final DEBUG_SERVICE:Z = false
83 .field static final DEBUG_SERVICE_EXECUTING:Z = false
85 .field static final DEBUG_SWITCH:Z = false
87 .field static final DEBUG_TASKS:Z = false
89 .field static final DEBUG_TRANSITION:Z = false
91 .field static final DEBUG_URI_PERMISSION:Z = false
93 .field static final DEBUG_USER_LEAVING:Z = false
95 .field static final DEBUG_VISBILITY:Z = false
97 .field static final DISPATCH_PROCESSES_CHANGED:I = 0x1f
99 .field static final DISPATCH_PROCESS_DIED:I = 0x20
101 .field static final DO_PENDING_ACTIVITY_LAUNCHES_MSG:I = 0x15
103 .field static final DUMP_MEM_BUCKETS:[J = null
105 .field static final DUMP_MEM_OOM_ADJ:[I = null
107 .field static final DUMP_MEM_OOM_LABEL:[Ljava/lang/String; = null
109 .field static final EMPTY_STRING_ARRAY:[Ljava/lang/String; = null
111 .field static final FINALIZE_PENDING_INTENT_MSG:I = 0x17
113 .field static final FIRST_ACTIVITY_STACK_MSG:I = 0x64
115 .field static final FIRST_BROADCAST_QUEUE_MSG:I = 0xc8
117 .field static final FIRST_COMPAT_MODE_MSG:I = 0x12c
119 .field static final GC_BACKGROUND_PROCESSES_MSG:I = 0x5
121 .field static final GC_MIN_INTERVAL:I = 0xea60
123 .field static final GC_TIMEOUT:I = 0x1388
125 .field static final IM_FEELING_LUCKY_MSG:I = 0xf
127 .field static final INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT:I = 0xea60
129 #the value of this static final field might be set in the static constructor
130 .field static final IS_USER_BUILD:Z = false
132 .field static final KEY_DISPATCHING_TIMEOUT:I = 0x1388
134 .field static final KILL_APPLICATION_MSG:I = 0x16
136 .field static final LAST_DONE_VERSION:I = 0x2710
138 .field private static final MAX_DUP_SUPPRESSED_STACKS:I = 0x1388
140 .field static final MAX_RECENT_TASKS:I = 0x14
142 .field static final MAX_SERVICE_INACTIVITY:I = 0x1b7740
144 .field static final MONITOR_CPU_MAX_TIME:J = 0xfffffffL
146 .field static final MONITOR_CPU_MIN_TIME:J = 0x1388L
148 .field static final MONITOR_CPU_USAGE:Z = true
150 .field static final MONITOR_THREAD_CPU_USAGE:Z = false
152 #the value of this static final field might be set in the static constructor
153 .field static final MY_PID:I = 0x0
155 .field static final POST_HEAVY_NOTIFICATION_MSG:I = 0x18
157 .field static final POWER_CHECK_DELAY:I = 0xdbba0
159 .field static final PROC_START_TIMEOUT:I = 0x2710
161 .field static final PROC_START_TIMEOUT_MSG:I = 0x14
163 .field static final PROC_START_TIMEOUT_WITH_WRAPPER:I = 0x493e0
165 .field static final REPORT_MEM_USAGE:I = 0x21
167 .field static final SERVICE_MIN_RESTART_TIME_BETWEEN:I = 0x2710
169 .field static final SERVICE_RESET_RUN_DURATION:I = 0xea60
171 .field static final SERVICE_RESTART_DURATION:I = 0x1388
173 .field static final SERVICE_RESTART_DURATION_FACTOR:I = 0x4
175 .field static final SERVICE_TIMEOUT:I = 0x4e20
177 .field static final SERVICE_TIMEOUT_MSG:I = 0xc
179 .field static final SHOW_ACTIVITY_START_TIME:Z = true
181 .field static final SHOW_COMPAT_MODE_DIALOG_MSG:I = 0x1e
183 .field static final SHOW_ERROR_MSG:I = 0x1
185 .field static final SHOW_FACTORY_ERROR_MSG:I = 0x3
187 .field static final SHOW_NOT_RESPONDING_MSG:I = 0x2
189 .field static final SHOW_STRICT_MODE_VIOLATION_MSG:I = 0x1a
191 .field static final SHOW_UID_ERROR_MSG:I = 0xe
193 .field static final STOCK_PM_FLAGS:I = 0x400
195 .field private static final SYSTEM_DEBUGGABLE:Ljava/lang/String; = "ro.debuggable"
197 .field static final TAG:Ljava/lang/String; = "ActivityManager"
199 .field static final TAG_MU:Ljava/lang/String; = "ActivityManagerServiceMU"
201 .field static final UPDATE_CONFIGURATION_MSG:I = 0x4
203 .field static final UPDATE_HTTP_PROXY:I = 0x1d
205 .field static final UPDATE_TIME_ZONE:I = 0xd
207 .field private static final USER_DATA_DIR:Ljava/lang/String; = "/data/user/"
209 .field static final VALIDATE_TOKENS:Z = false
211 .field static final WAIT_FOR_DEBUGGER_MSG:I = 0x6
213 .field static final WAKE_LOCK_MIN_CHECK_DURATION:I = 0x493e0
215 .field static final localLOGV:Z
217 .field static mSelf:Lcom/android/server/am/ActivityManagerService;
219 .field static mSystemThread:Landroid/app/ActivityThread;
221 .field private static sCallerIdentity:Ljava/lang/ThreadLocal;
222     .annotation system Ldalvik/annotation/Signature;
223         value = {
224             "Ljava/lang/ThreadLocal",
225             "<",
226             "Lcom/android/server/am/ActivityManagerService$Identity;",
227             ">;"
228         }
229     .end annotation
230 .end field
233 # instance fields
234 .field final GL_ES_VERSION:I
236 .field mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
238 .field mAdjSeq:I
240 .field private final mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
241     .annotation system Ldalvik/annotation/Signature;
242         value = {
243             "Ljava/util/HashSet",
244             "<",
245             "Ljava/lang/Integer;",
246             ">;"
247         }
248     .end annotation
249 .end field
251 .field mAlwaysFinishActivities:Z
253 .field mAppBindArgs:Ljava/util/HashMap;
254     .annotation system Ldalvik/annotation/Signature;
255         value = {
256             "Ljava/util/HashMap",
257             "<",
258             "Ljava/lang/String;",
259             "Landroid/os/IBinder;",
260             ">;"
261         }
262     .end annotation
263 .end field
265 .field mAppSwitchesAllowedTime:J
267 .field mAutoStopProfiler:Z
269 .field final mAvailProcessChanges:Ljava/util/ArrayList;
270     .annotation system Ldalvik/annotation/Signature;
271         value = {
272             "Ljava/util/ArrayList",
273             "<",
274             "Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;",
275             ">;"
276         }
277     .end annotation
278 .end field
280 .field mBackupAppName:Ljava/lang/String;
282 .field mBackupTarget:Lcom/android/server/am/BackupRecord;
284 .field final mBadProcesses:Lcom/android/server/ProcessMap;
285     .annotation system Ldalvik/annotation/Signature;
286         value = {
287             "Lcom/android/server/ProcessMap",
288             "<",
289             "Ljava/lang/Long;",
290             ">;"
291         }
292     .end annotation
293 .end field
295 .field final mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
297 .field mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
299 .field mBooted:Z
301 .field mBooting:Z
303 .field final mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
305 .field final mCancelledThumbnails:Ljava/util/ArrayList;
307 .field mCheckedForSetup:Z
309 .field mCompatModeDialog:Lcom/android/server/am/CompatModeDialog;
311 .field final mCompatModePackages:Lcom/android/server/am/CompatModePackages;
313 .field mConfiguration:Landroid/content/res/Configuration;
315 .field mConfigurationSeq:I
317 .field mContext:Landroid/content/Context;
319 .field mController:Landroid/app/IActivityController;
321 .field mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
323 .field mCurTask:I
325 .field private mCurrentUserId:I
327 .field mDebugApp:Ljava/lang/String;
329 .field mDebugTransient:Z
331 .field mDidAppSwitch:Z
333 .field mDidDexOpt:Z
335 .field mDidUpdate:Z
337 .field mFactoryTest:I
339 .field mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
341 .field mFocusedActivity:Lcom/android/server/am/ActivityRecord;
343 .field final mForegroundProcesses:Landroid/util/SparseArray;
344     .annotation system Ldalvik/annotation/Signature;
345         value = {
346             "Landroid/util/SparseArray",
347             "<",
348             "Lcom/android/server/am/ActivityManagerService$ForegroundToken;",
349             ">;"
350         }
351     .end annotation
352 .end field
354 .field private final mGrantedUriPermissions:Landroid/util/SparseArray;
355     .annotation system Ldalvik/annotation/Signature;
356         value = {
357             "Landroid/util/SparseArray",
358             "<",
359             "Ljava/util/HashMap",
360             "<",
361             "Landroid/net/Uri;",
362             "Lcom/android/server/am/UriPermission;",
363             ">;>;"
364         }
365     .end annotation
366 .end field
368 .field final mHandler:Landroid/os/Handler;
370 .field private final mHeadless:Z
372 .field mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
374 .field mHomeProcess:Lcom/android/server/am/ProcessRecord;
376 .field final mIntentSenderRecords:Ljava/util/HashMap;
377     .annotation system Ldalvik/annotation/Signature;
378         value = {
379             "Ljava/util/HashMap",
380             "<",
381             "Lcom/android/server/am/PendingIntentRecord$Key;",
382             "Ljava/lang/ref/WeakReference",
383             "<",
384             "Lcom/android/server/am/PendingIntentRecord;",
385             ">;>;"
386         }
387     .end annotation
388 .end field
390 .field final mIsolatedProcesses:Landroid/util/SparseArray;
391     .annotation system Ldalvik/annotation/Signature;
392         value = {
393             "Landroid/util/SparseArray",
394             "<",
395             "Lcom/android/server/am/ProcessRecord;",
396             ">;"
397         }
398     .end annotation
399 .end field
401 .field final mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
403 .field mLastMemUsageReportTime:J
405 .field mLastPowerCheckRealtime:J
407 .field mLastPowerCheckUptime:J
409 .field mLastWriteTime:J
411 .field mLaunchWarningShown:Z
413 .field final mLaunchingProviders:Ljava/util/ArrayList;
414     .annotation system Ldalvik/annotation/Signature;
415         value = {
416             "Ljava/util/ArrayList",
417             "<",
418             "Lcom/android/server/am/ContentProviderRecord;",
419             ">;"
420         }
421     .end annotation
422 .end field
424 .field mLockScreenShown:Z
426 .field private mLoggedInUsers:Landroid/util/SparseIntArray;
428 .field final mLruProcesses:Ljava/util/ArrayList;
429     .annotation system Ldalvik/annotation/Signature;
430         value = {
431             "Ljava/util/ArrayList",
432             "<",
433             "Lcom/android/server/am/ProcessRecord;",
434             ">;"
435         }
436     .end annotation
437 .end field
439 .field mLruSeq:I
441 .field public mMainStack:Lcom/android/server/am/ActivityStack;
443 .field mNewNumServiceProcs:I
445 .field mNextIsolatedProcessUid:I
447 .field mNumServiceProcs:I
449 .field mOnBattery:Z
451 .field mOpenGlTraceApp:Ljava/lang/String;
453 .field mOrigDebugApp:Ljava/lang/String;
455 .field mOrigWaitForDebugger:Z
457 .field final mPendingActivityLaunches:Ljava/util/ArrayList;
458     .annotation system Ldalvik/annotation/Signature;
459         value = {
460             "Ljava/util/ArrayList",
461             "<",
462             "Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;",
463             ">;"
464         }
465     .end annotation
466 .end field
468 .field final mPendingProcessChanges:Ljava/util/ArrayList;
469     .annotation system Ldalvik/annotation/Signature;
470         value = {
471             "Ljava/util/ArrayList",
472             "<",
473             "Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;",
474             ">;"
475         }
476     .end annotation
477 .end field
479 .field final mPendingResultRecords:Ljava/util/HashSet;
481 .field final mPendingServices:Ljava/util/ArrayList;
482     .annotation system Ldalvik/annotation/Signature;
483         value = {
484             "Ljava/util/ArrayList",
485             "<",
486             "Lcom/android/server/am/ServiceRecord;",
487             ">;"
488         }
489     .end annotation
490 .end field
492 .field final mPendingThumbnails:Ljava/util/ArrayList;
494 .field final mPersistentStartingProcesses:Ljava/util/ArrayList;
495     .annotation system Ldalvik/annotation/Signature;
496         value = {
497             "Ljava/util/ArrayList",
498             "<",
499             "Lcom/android/server/am/ProcessRecord;",
500             ">;"
501         }
502     .end annotation
503 .end field
505 .field final mPidsSelfLocked:Landroid/util/SparseArray;
506     .annotation system Ldalvik/annotation/Signature;
507         value = {
508             "Landroid/util/SparseArray",
509             "<",
510             "Lcom/android/server/am/ProcessRecord;",
511             ">;"
512         }
513     .end annotation
514 .end field
516 .field mPreviousProcess:Lcom/android/server/am/ProcessRecord;
518 .field mPreviousProcessVisibleTime:J
520 .field mProcDeaths:[I
522 .field final mProcessCrashTimes:Lcom/android/server/ProcessMap;
523     .annotation system Ldalvik/annotation/Signature;
524         value = {
525             "Lcom/android/server/ProcessMap",
526             "<",
527             "Ljava/lang/Long;",
528             ">;"
529         }
530     .end annotation
531 .end field
533 .field mProcessLimit:I
535 .field mProcessLimitOverride:I
537 .field final mProcessList:Lcom/android/server/am/ProcessList;
539 .field final mProcessNames:Lcom/android/server/ProcessMap;
540     .annotation system Ldalvik/annotation/Signature;
541         value = {
542             "Lcom/android/server/ProcessMap",
543             "<",
544             "Lcom/android/server/am/ProcessRecord;",
545             ">;"
546         }
547     .end annotation
548 .end field
550 .field final mProcessObservers:Landroid/os/RemoteCallbackList;
551     .annotation system Ldalvik/annotation/Signature;
552         value = {
553             "Landroid/os/RemoteCallbackList",
554             "<",
555             "Landroid/app/IProcessObserver;",
556             ">;"
557         }
558     .end annotation
559 .end field
561 .field final mProcessStats:Lcom/android/internal/os/ProcessStats;
563 .field final mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
565 .field final mProcessStatsThread:Ljava/lang/Thread;
567 .field final mProcessesOnHold:Ljava/util/ArrayList;
568     .annotation system Ldalvik/annotation/Signature;
569         value = {
570             "Ljava/util/ArrayList",
571             "<",
572             "Lcom/android/server/am/ProcessRecord;",
573             ">;"
574         }
575     .end annotation
576 .end field
578 .field mProcessesReady:Z
580 .field final mProcessesToGc:Ljava/util/ArrayList;
581     .annotation system Ldalvik/annotation/Signature;
582         value = {
583             "Ljava/util/ArrayList",
584             "<",
585             "Lcom/android/server/am/ProcessRecord;",
586             ">;"
587         }
588     .end annotation
589 .end field
591 .field mProfileApp:Ljava/lang/String;
593 .field mProfileFd:Landroid/os/ParcelFileDescriptor;
595 .field mProfileFile:Ljava/lang/String;
597 .field mProfileProc:Lcom/android/server/am/ProcessRecord;
599 .field mProfileType:I
601 .field final mProviderMap:Lcom/android/server/am/ProviderMap;
603 .field final mReceiverResolver:Lcom/android/server/IntentResolver;
604     .annotation system Ldalvik/annotation/Signature;
605         value = {
606             "Lcom/android/server/IntentResolver",
607             "<",
608             "Lcom/android/server/am/BroadcastFilter;",
609             "Lcom/android/server/am/BroadcastFilter;",
610             ">;"
611         }
612     .end annotation
613 .end field
615 .field final mRecentTasks:Ljava/util/ArrayList;
616     .annotation system Ldalvik/annotation/Signature;
617         value = {
618             "Ljava/util/ArrayList",
619             "<",
620             "Lcom/android/server/am/TaskRecord;",
621             ">;"
622         }
623     .end annotation
624 .end field
626 .field final mRegisteredReceivers:Ljava/util/HashMap;
628 .field final mRemovedProcesses:Ljava/util/ArrayList;
629     .annotation system Ldalvik/annotation/Signature;
630         value = {
631             "Ljava/util/ArrayList",
632             "<",
633             "Lcom/android/server/am/ProcessRecord;",
634             ">;"
635         }
636     .end annotation
637 .end field
639 .field mRequestPssCallback:Ljava/lang/Runnable;
641 .field final mRequestPssList:Ljava/util/ArrayList;
642     .annotation system Ldalvik/annotation/Signature;
643         value = {
644             "Ljava/util/ArrayList",
645             "<",
646             "Lcom/android/server/am/ProcessRecord;",
647             ">;"
648         }
649     .end annotation
650 .end field
652 .field final mRestartingServices:Ljava/util/ArrayList;
653     .annotation system Ldalvik/annotation/Signature;
654         value = {
655             "Ljava/util/ArrayList",
656             "<",
657             "Lcom/android/server/am/ServiceRecord;",
658             ">;"
659         }
660     .end annotation
661 .end field
663 .field final mServiceConnections:Ljava/util/HashMap;
664     .annotation system Ldalvik/annotation/Signature;
665         value = {
666             "Ljava/util/HashMap",
667             "<",
668             "Landroid/os/IBinder;",
669             "Ljava/util/ArrayList",
670             "<",
671             "Lcom/android/server/am/ConnectionRecord;",
672             ">;>;"
673         }
674     .end annotation
675 .end field
677 .field final mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
679 .field private mShowDialogs:Z
681 .field mShuttingDown:Z
683 .field mSleeping:Z
685 .field mStartRunning:Z
687 .field final mStickyBroadcasts:Ljava/util/HashMap;
688     .annotation system Ldalvik/annotation/Signature;
689         value = {
690             "Ljava/util/HashMap",
691             "<",
692             "Ljava/lang/String;",
693             "Ljava/util/ArrayList",
694             "<",
695             "Landroid/content/Intent;",
696             ">;>;"
697         }
698     .end annotation
699 .end field
701 .field final mStoppingServices:Ljava/util/ArrayList;
702     .annotation system Ldalvik/annotation/Signature;
703         value = {
704             "Ljava/util/ArrayList",
705             "<",
706             "Lcom/android/server/am/ServiceRecord;",
707             ">;"
708         }
709     .end annotation
710 .end field
712 .field private final mStrictModeBuffer:Ljava/lang/StringBuilder;
714 .field final mStringBuilder:Ljava/lang/StringBuilder;
716 .field mSystemReady:Z
718 .field mTopAction:Ljava/lang/String;
720 .field mTopComponent:Landroid/content/ComponentName;
722 .field mTopData:Ljava/lang/String;
724 .field mUiContext:Landroid/content/Context;
726 .field mUidAlert:Landroid/app/AlertDialog;
728 .field final mUsageStatsService:Lcom/android/server/am/UsageStatsService;
730 .field mWaitForDebugger:Z
732 .field mWaitingUpdate:Z
734 .field mWentToSleep:Z
736 .field mWindowManager:Lcom/android/server/wm/WindowManagerService;
739 # direct methods
740 .method static constructor <clinit>()V
741     .registers 4
743     const/16 v3, 0xc
745     const/4 v2, 0x0
747     const-string v0, "user"
749     sget-object v1, Landroid/os/Build;->TYPE:Ljava/lang/String;
751     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
753     move-result v0
755     sput-boolean v0, Lcom/android/server/am/ActivityManagerService;->IS_USER_BUILD:Z
757     invoke-static {}, Landroid/os/Process;->myPid()I
759     move-result v0
761     sput v0, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
763     new-array v0, v2, [Ljava/lang/String;
765     sput-object v0, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
767     new-instance v0, Ljava/lang/ThreadLocal;
769     invoke-direct {v0}, Ljava/lang/ThreadLocal;-><init>()V
771     sput-object v0, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
773     const/16 v0, 0x17
775     new-array v0, v0, [J
777     fill-array-data v0, :array_72
779     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
781     new-array v0, v3, [I
783     fill-array-data v0, :array_d2
785     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
787     new-array v0, v3, [Ljava/lang/String;
789     const-string v1, "System"
791     aput-object v1, v0, v2
793     const/4 v1, 0x1
795     const-string v2, "Persistent"
797     aput-object v2, v0, v1
799     const/4 v1, 0x2
801     const-string v2, "Foreground"
803     aput-object v2, v0, v1
805     const/4 v1, 0x3
807     const-string v2, "Visible"
809     aput-object v2, v0, v1
811     const/4 v1, 0x4
813     const-string v2, "Perceptible"
815     aput-object v2, v0, v1
817     const/4 v1, 0x5
819     const-string v2, "Heavy Weight"
821     aput-object v2, v0, v1
823     const/4 v1, 0x6
825     const-string v2, "Backup"
827     aput-object v2, v0, v1
829     const/4 v1, 0x7
831     const-string v2, "A Services"
833     aput-object v2, v0, v1
835     const/16 v1, 0x8
837     const-string v2, "Home"
839     aput-object v2, v0, v1
841     const/16 v1, 0x9
843     const-string v2, "Previous"
845     aput-object v2, v0, v1
847     const/16 v1, 0xa
849     const-string v2, "B Services"
851     aput-object v2, v0, v1
853     const/16 v1, 0xb
855     const-string v2, "Background"
857     aput-object v2, v0, v1
859     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
861     return-void
863     :array_72
864     .array-data 0x8
865         0x0t 0x14t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
866         0x0t 0x1ct 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
867         0x0t 0x28t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
868         0x0t 0x3ct 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
869         0x0t 0x50t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
870         0x0t 0x78t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
871         0x0t 0xa0t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
872         0x0t 0x40t 0x1t 0x0t 0x0t 0x0t 0x0t 0x0t
873         0x0t 0xe0t 0x1t 0x0t 0x0t 0x0t 0x0t 0x0t
874         0x0t 0x80t 0x2t 0x0t 0x0t 0x0t 0x0t 0x0t
875         0x0t 0x20t 0x3t 0x0t 0x0t 0x0t 0x0t 0x0t
876         0x0t 0xe8t 0x3t 0x0t 0x0t 0x0t 0x0t 0x0t
877         0x0t 0xb0t 0x4t 0x0t 0x0t 0x0t 0x0t 0x0t
878         0x0t 0x78t 0x5t 0x0t 0x0t 0x0t 0x0t 0x0t
879         0x0t 0x40t 0x6t 0x0t 0x0t 0x0t 0x0t 0x0t
880         0x0t 0xd0t 0x7t 0x0t 0x0t 0x0t 0x0t 0x0t
881         0x0t 0x60t 0x9t 0x0t 0x0t 0x0t 0x0t 0x0t
882         0x0t 0x80t 0xct 0x0t 0x0t 0x0t 0x0t 0x0t
883         0x0t 0x0t 0x10t 0x0t 0x0t 0x0t 0x0t 0x0t
884         0x0t 0x0t 0x20t 0x0t 0x0t 0x0t 0x0t 0x0t
885         0x0t 0x0t 0x50t 0x0t 0x0t 0x0t 0x0t 0x0t
886         0x0t 0x0t 0xa0t 0x0t 0x0t 0x0t 0x0t 0x0t
887         0x0t 0x0t 0x40t 0x1t 0x0t 0x0t 0x0t 0x0t
888     .end array-data
890     :array_d2
891     .array-data 0x4
892         0xf0t 0xfft 0xfft 0xfft
893         0xf4t 0xfft 0xfft 0xfft
894         0x0t 0x0t 0x0t 0x0t
895         0x1t 0x0t 0x0t 0x0t
896         0x2t 0x0t 0x0t 0x0t
897         0x3t 0x0t 0x0t 0x0t
898         0x4t 0x0t 0x0t 0x0t
899         0x5t 0x0t 0x0t 0x0t
900         0x6t 0x0t 0x0t 0x0t
901         0x7t 0x0t 0x0t 0x0t
902         0x8t 0x0t 0x0t 0x0t
903         0xft 0x0t 0x0t 0x0t
904     .end array-data
905 .end method
907 .method private constructor <init>()V
908     .registers 11
910     const/4 v5, 0x5
912     const-wide/16 v8, 0x0
914     const/4 v7, 0x1
916     const/4 v4, 0x0
918     const/4 v6, 0x0
920     invoke-direct {p0}, Landroid/app/ActivityManagerNative;-><init>()V
922     iput-boolean v7, p0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
924     new-instance v2, Ljava/util/ArrayList;
926     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
928     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
930     const/4 v2, 0x2
932     new-array v2, v2, [Lcom/android/server/am/BroadcastQueue;
934     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
936     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
938     new-instance v2, Ljava/util/ArrayList;
940     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
942     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
944     new-instance v2, Lcom/android/server/am/ProcessList;
946     invoke-direct {v2}, Lcom/android/server/am/ProcessList;-><init>()V
948     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
950     new-instance v2, Lcom/android/server/ProcessMap;
952     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
954     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
956     new-instance v2, Landroid/util/SparseArray;
958     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
960     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
962     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
964     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
966     new-instance v2, Lcom/android/server/ProcessMap;
968     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
970     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
972     new-instance v2, Lcom/android/server/ProcessMap;
974     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
976     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
978     new-instance v2, Landroid/util/SparseArray;
980     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
982     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
984     new-instance v2, Landroid/util/SparseArray;
986     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
988     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
990     new-instance v2, Ljava/util/ArrayList;
992     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
994     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
996     new-instance v2, Ljava/util/ArrayList;
998     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1000     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
1002     new-instance v2, Ljava/util/ArrayList;
1004     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1006     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
1008     new-instance v2, Ljava/util/ArrayList;
1010     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1012     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
1014     new-instance v2, Ljava/util/ArrayList;
1016     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1018     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
1020     new-instance v2, Ljava/util/HashSet;
1022     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
1024     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingResultRecords:Ljava/util/HashSet;
1026     new-instance v2, Ljava/util/HashMap;
1028     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1030     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
1032     new-instance v2, Ljava/util/HashSet;
1034     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
1036     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
1038     new-instance v2, Ljava/lang/StringBuilder;
1040     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
1042     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
1044     new-instance v2, Ljava/util/HashMap;
1046     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1048     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
1050     new-instance v2, Lcom/android/server/am/ActivityManagerService$1;
1052     invoke-direct {v2, p0}, Lcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1054     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
1056     new-instance v2, Ljava/util/HashMap;
1058     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1060     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
1062     new-instance v2, Lcom/android/server/am/ActivityManagerService$ServiceMap;
1064     invoke-direct {v2}, Lcom/android/server/am/ActivityManagerService$ServiceMap;-><init>()V
1066     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
1068     new-instance v2, Ljava/util/HashMap;
1070     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1072     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
1074     new-instance v2, Ljava/util/ArrayList;
1076     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1078     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
1080     new-instance v2, Ljava/util/ArrayList;
1082     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1084     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
1086     new-instance v2, Ljava/util/ArrayList;
1088     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1090     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
1092     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
1094     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
1096     new-instance v2, Ljava/util/ArrayList;
1098     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1100     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
1102     new-instance v2, Ljava/util/ArrayList;
1104     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1106     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mCancelledThumbnails:Ljava/util/ArrayList;
1108     new-instance v2, Lcom/android/server/am/ProviderMap;
1110     invoke-direct {v2}, Lcom/android/server/am/ProviderMap;-><init>()V
1112     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
1114     new-instance v2, Ljava/util/ArrayList;
1116     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1118     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
1120     new-instance v2, Landroid/util/SparseArray;
1122     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
1124     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
1126     new-instance v2, Landroid/content/res/Configuration;
1128     invoke-direct {v2}, Landroid/content/res/Configuration;-><init>()V
1130     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1132     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
1134     new-instance v2, Ljava/lang/StringBuilder;
1136     const/16 v3, 0x100
1138     invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(I)V
1140     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
1142     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
1144     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
1146     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
1148     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
1150     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
1152     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
1154     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
1156     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
1158     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
1160     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
1162     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
1164     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
1166     iput v7, p0, Lcom/android/server/am/ActivityManagerService;->mCurTask:I
1168     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
1170     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
1172     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
1174     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
1176     const/16 v2, 0x14
1178     new-array v2, v2, [I
1180     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
1182     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
1184     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
1186     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
1188     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
1190     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
1192     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
1194     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
1196     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
1198     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
1200     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
1202     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
1204     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
1206     new-instance v2, Landroid/os/RemoteCallbackList;
1208     invoke-direct {v2}, Landroid/os/RemoteCallbackList;-><init>()V
1210     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
1212     new-array v2, v5, [Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
1214     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
1216     new-instance v2, Ljava/util/ArrayList;
1218     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1220     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
1222     new-instance v2, Ljava/util/ArrayList;
1224     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1226     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
1228     new-instance v2, Ljava/util/ArrayList;
1230     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1232     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRequestPssList:Ljava/util/ArrayList;
1234     new-instance v2, Lcom/android/internal/os/ProcessStats;
1236     invoke-direct {v2, v6}, Lcom/android/internal/os/ProcessStats;-><init>(Z)V
1238     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
1240     new-instance v2, Ljava/util/concurrent/atomic/AtomicLong;
1242     invoke-direct {v2, v8, v9}, Ljava/util/concurrent/atomic/AtomicLong;-><init>(J)V
1244     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
1246     new-instance v2, Ljava/util/concurrent/atomic/AtomicBoolean;
1248     invoke-direct {v2, v7}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
1250     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
1252     iput-wide v8, p0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
1254     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
1256     const/16 v2, 0xf
1258     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
1260     const/4 v2, -0x1
1262     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
1264     iput-wide v8, p0, Lcom/android/server/am/ActivityManagerService;->mLastMemUsageReportTime:J
1266     new-instance v2, Lcom/android/server/am/ActivityManagerService$2;
1268     invoke-direct {v2, p0}, Lcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1270     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
1272     new-instance v2, Landroid/util/SparseIntArray;
1274     invoke-direct {v2, v5}, Landroid/util/SparseIntArray;-><init>(I)V
1276     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLoggedInUsers:Landroid/util/SparseIntArray;
1278     const-string v2, "ActivityManager"
1280     new-instance v3, Ljava/lang/StringBuilder;
1282     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
1284     const-string v4, "Memory class: "
1286     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1288     move-result-object v3
1290     invoke-static {}, Landroid/app/ActivityManager;->staticGetMemoryClass()I
1292     move-result v4
1294     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1296     move-result-object v3
1298     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1300     move-result-object v3
1302     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
1304     new-instance v2, Lcom/android/server/am/BroadcastQueue;
1306     const-string v3, "foreground"
1308     const-wide/16 v4, 0x2710
1310     invoke-direct {v2, p0, v3, v4, v5}, Lcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;J)V
1312     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1314     new-instance v2, Lcom/android/server/am/BroadcastQueue;
1316     const-string v3, "background"
1318     const-wide/32 v4, 0xea60
1320     invoke-direct {v2, p0, v3, v4, v5}, Lcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;J)V
1322     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1324     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
1326     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1328     aput-object v3, v2, v6
1330     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
1332     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1334     aput-object v3, v2, v7
1336     invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
1338     move-result-object v0
1340     new-instance v1, Ljava/io/File;
1342     const-string v2, "system"
1344     invoke-direct {v1, v0, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1346     invoke-virtual {v1}, Ljava/io/File;->mkdirs()Z
1348     new-instance v2, Lcom/android/server/am/BatteryStatsService;
1350     new-instance v3, Ljava/io/File;
1352     const-string v4, "batterystats.bin"
1354     invoke-direct {v3, v1, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1356     invoke-virtual {v3}, Ljava/io/File;->toString()Ljava/lang/String;
1358     move-result-object v3
1360     invoke-direct {v2, v3}, Lcom/android/server/am/BatteryStatsService;-><init>(Ljava/lang/String;)V
1362     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1364     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1366     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1368     move-result-object v2
1370     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->readLocked()V
1372     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1374     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1376     move-result-object v2
1378     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V
1380     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1382     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1384     move-result-object v2
1386     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->getIsOnBattery()Z
1388     move-result v2
1390     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
1392     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1394     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1396     move-result-object v2
1398     invoke-virtual {v2, p0}, Lcom/android/internal/os/BatteryStatsImpl;->setCallback(Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;)V
1400     new-instance v2, Lcom/android/server/am/UsageStatsService;
1402     new-instance v3, Ljava/io/File;
1404     const-string v4, "usagestats"
1406     invoke-direct {v3, v1, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1408     invoke-virtual {v3}, Ljava/io/File;->toString()Ljava/lang/String;
1410     move-result-object v3
1412     invoke-direct {v2, v3}, Lcom/android/server/am/UsageStatsService;-><init>(Ljava/lang/String;)V
1414     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
1416     const-string v2, "1"
1418     const-string v3, "ro.config.headless"
1420     const-string v4, "0"
1422     invoke-static {v3, v4}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
1424     move-result-object v3
1426     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1428     move-result v2
1430     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
1432     const-string v2, "ro.opengles.version"
1434     invoke-static {v2, v6}, Landroid/os/SystemProperties;->getInt(Ljava/lang/String;I)I
1436     move-result v2
1438     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->GL_ES_VERSION:I
1440     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1442     invoke-virtual {v2}, Landroid/content/res/Configuration;->setToDefaults()V
1444     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1446     invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
1448     move-result-object v3
1450     iput-object v3, v2, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
1452     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1454     iput v7, v2, Landroid/content/res/Configuration;->seq:I
1456     iput v7, p0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
1458     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
1460     invoke-virtual {v2}, Lcom/android/internal/os/ProcessStats;->init()V
1462     new-instance v2, Lcom/android/server/am/CompatModePackages;
1464     invoke-direct {v2, p0, v1}, Lcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
1466     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
1468     invoke-static {}, Lcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
1470     move-result-object v2
1472     invoke-virtual {v2, p0}, Lcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
1474     new-instance v2, Lcom/android/server/am/ActivityManagerService$3;
1476     const-string v3, "ProcessStats"
1478     invoke-direct {v2, p0, v3}, Lcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V
1480     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
1482     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
1484     invoke-virtual {v2}, Ljava/lang/Thread;->start()V
1486     return-void
1487 .end method
1489 .method synthetic constructor <init>(Lcom/android/server/am/ActivityManagerService$1;)V
1490     .registers 2
1492     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;-><init>()V
1494     return-void
1495 .end method
1497 .method static synthetic access$000(Lcom/android/server/am/ActivityManagerService;)Z
1498     .registers 2
1500     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
1502     return v0
1503 .end method
1505 .method static synthetic access$100(Lcom/android/server/am/ActivityManagerService;)Landroid/content/Context;
1506     .registers 2
1508     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->getUiContext()Landroid/content/Context;
1510     move-result-object v0
1512     return-object v0
1513 .end method
1515 .method static synthetic access$1000(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder;
1516     .registers 2
1518     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
1520     return-object v0
1521 .end method
1523 .method static synthetic access$200(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
1524     .registers 16
1526     invoke-direct/range {p0 .. p14}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
1528     move-result v0
1530     return v0
1531 .end method
1533 .method static synthetic access$300(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
1534     .registers 2
1536     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
1538     return-void
1539 .end method
1541 .method static synthetic access$400(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;IZZZZI)Z
1542     .registers 9
1544     invoke-direct/range {p0 .. p7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
1546     move-result v0
1548     return v0
1549 .end method
1551 .method static synthetic access$500(Lcom/android/server/am/ActivityManagerService;)V
1552     .registers 1
1554     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V
1556     return-void
1557 .end method
1559 .method static synthetic access$600(Lcom/android/server/am/ActivityManagerService;II)V
1560     .registers 3
1562     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V
1564     return-void
1565 .end method
1567 .method static synthetic access$800(Lcom/android/server/am/ActivityManagerService;Landroid/content/Intent;)V
1568     .registers 2
1570     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->onUserRemoved(Landroid/content/Intent;)V
1572     return-void
1573 .end method
1575 .method static synthetic access$900(Ljava/util/ArrayList;)V
1576     .registers 1
1578     invoke-static {p0}, Lcom/android/server/am/ActivityManagerService;->writeLastDonePreBootReceivers(Ljava/util/ArrayList;)V
1580     return-void
1581 .end method
1583 .method private appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
1584     .registers 13
1586     if-nez p1, :cond_12
1588     const-string v6, "Process: "
1590     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1592     move-result-object v6
1594     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1596     move-result-object v6
1598     const-string v7, "\n"
1600     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1602     :goto_11
1603     return-void
1605     :cond_12
1606     monitor-enter p0
1608     :try_start_13
1609     const-string v6, "Process: "
1611     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1613     move-result-object v6
1615     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1617     move-result-object v6
1619     const-string v7, "\n"
1621     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1623     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
1625     iget v1, v6, Landroid/content/pm/ApplicationInfo;->flags:I
1627     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
1629     move-result-object v5
1631     const-string v6, "Flags: 0x"
1633     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1635     move-result-object v6
1637     const/16 v7, 0x10
1639     invoke-static {v1, v7}, Ljava/lang/Integer;->toString(II)Ljava/lang/String;
1641     move-result-object v7
1643     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1645     move-result-object v6
1647     const-string v7, "\n"
1649     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1651     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
1653     invoke-virtual {v6}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
1655     move-result-object v2
1657     :goto_45
1658     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
1660     move-result v6
1662     if-eqz v6, :cond_a5
1664     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
1666     move-result-object v4
1668     check-cast v4, Ljava/lang/String;
1670     const-string v6, "Package: "
1672     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1674     move-result-object v6
1676     invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1677     :try_end_5a
1678     .catchall {:try_start_13 .. :try_end_5a} :catchall_88
1680     const/4 v6, 0x0
1682     const/4 v7, 0x0
1684     :try_start_5c
1685     invoke-interface {v5, v4, v6, v7}, Landroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
1687     move-result-object v3
1689     if-eqz v3, :cond_82
1691     const-string v6, " v"
1693     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1695     move-result-object v6
1697     iget v7, v3, Landroid/content/pm/PackageInfo;->versionCode:I
1699     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1701     iget-object v6, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
1703     if-eqz v6, :cond_82
1705     const-string v6, " ("
1707     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1709     move-result-object v6
1711     iget-object v7, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
1713     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1715     move-result-object v6
1717     const-string v7, ")"
1719     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1720     :try_end_82
1721     .catchall {:try_start_5c .. :try_end_82} :catchall_88
1722     .catch Landroid/os/RemoteException; {:try_start_5c .. :try_end_82} :catch_8b
1724     :cond_82
1725     :goto_82
1726     :try_start_82
1727     const-string v6, "\n"
1729     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1731     goto :goto_45
1733     :catchall_88
1734     move-exception v6
1736     monitor-exit p0
1737     :try_end_8a
1738     .catchall {:try_start_82 .. :try_end_8a} :catchall_88
1740     throw v6
1742     :catch_8b
1743     move-exception v0
1745     :try_start_8c
1746     const-string v6, "ActivityManager"
1748     new-instance v7, Ljava/lang/StringBuilder;
1750     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
1752     const-string v8, "Error getting package info: "
1754     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1756     move-result-object v7
1758     invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1760     move-result-object v7
1762     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1764     move-result-object v7
1766     invoke-static {v6, v7, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
1768     goto :goto_82
1770     :cond_a5
1771     monitor-exit p0
1772     :try_end_a6
1773     .catchall {:try_start_8c .. :try_end_a6} :catchall_88
1775     goto/16 :goto_11
1776 .end method
1778 .method static final appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
1779     .registers 14
1781     const-wide/16 v7, 0x400
1783     const/16 v5, 0x2e
1785     invoke-virtual {p3, v5}, Ljava/lang/String;->lastIndexOf(I)I
1787     move-result v4
1789     if-ltz v4, :cond_32
1791     add-int/lit8 v4, v4, 0x1
1793     :goto_c
1794     invoke-virtual {p3}, Ljava/lang/String;->length()I
1796     move-result v2
1798     const/4 v3, 0x0
1800     :goto_11
1801     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1803     array-length v5, v5
1805     if-ge v3, v5, :cond_3a
1807     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1809     aget-wide v5, v5, v3
1811     cmp-long v5, v5, p1
1813     if-ltz v5, :cond_37
1815     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1817     aget-wide v5, v5, v3
1819     div-long v0, v5, v7
1821     invoke-virtual {p0, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
1823     if-eqz p4, :cond_34
1825     const-string v5, "MB."
1827     :goto_2b
1828     invoke-virtual {p0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1830     invoke-virtual {p0, p3, v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
1832     :goto_31
1833     return-void
1835     :cond_32
1836     const/4 v4, 0x0
1838     goto :goto_c
1840     :cond_34
1841     const-string v5, "MB "
1843     goto :goto_2b
1845     :cond_37
1846     add-int/lit8 v3, v3, 0x1
1848     goto :goto_11
1850     :cond_3a
1851     div-long v5, p1, v7
1853     invoke-virtual {p0, v5, v6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
1855     if-eqz p4, :cond_4a
1857     const-string v5, "MB."
1859     :goto_43
1860     invoke-virtual {p0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1862     invoke-virtual {p0, p3, v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
1864     goto :goto_31
1866     :cond_4a
1867     const-string v5, "MB "
1869     goto :goto_43
1870 .end method
1872 .method private applyUserId(II)I
1873     .registers 4
1875     invoke-static {p2, p1}, Landroid/os/UserId;->getUid(II)I
1877     move-result v0
1879     return v0
1880 .end method
1882 .method private final attachApplicationLocked(Landroid/app/IApplicationThread;I)Z
1883     .registers 36
1885     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
1887     move/from16 v0, p2
1889     if-eq v0, v5, :cond_5f
1891     if-ltz p2, :cond_5f
1893     move-object/from16 v0, p0
1895     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
1897     monitor-enter v9
1899     :try_start_d
1900     move-object/from16 v0, p0
1902     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
1904     move/from16 v0, p2
1906     invoke-virtual {v5, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
1908     move-result-object v24
1910     check-cast v24, Lcom/android/server/am/ProcessRecord;
1912     monitor-exit v9
1913     :try_end_1a
1914     .catchall {:try_start_d .. :try_end_1a} :catchall_5c
1916     :goto_1a
1917     if-nez v24, :cond_68
1919     const-string v5, "ActivityManager"
1921     new-instance v9, Ljava/lang/StringBuilder;
1923     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
1925     const-string v13, "No pending application record for pid "
1927     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1929     move-result-object v9
1931     move/from16 v0, p2
1933     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1935     move-result-object v9
1937     const-string v13, " (IApplicationThread "
1939     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1941     move-result-object v9
1943     move-object/from16 v0, p1
1945     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1947     move-result-object v9
1949     const-string v13, "); dropping process"
1951     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1953     move-result-object v9
1955     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1957     move-result-object v9
1959     invoke-static {v5, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
1961     const/16 v5, 0x7551
1963     move/from16 v0, p2
1965     invoke-static {v5, v0}, Landroid/util/EventLog;->writeEvent(II)I
1967     if-lez p2, :cond_62
1969     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
1971     move/from16 v0, p2
1973     if-eq v0, v5, :cond_62
1975     invoke-static/range {p2 .. p2}, Landroid/os/Process;->killProcessQuiet(I)V
1977     :goto_5a
1978     const/4 v5, 0x0
1980     :goto_5b
1981     return v5
1983     :catchall_5c
1984     move-exception v5
1986     :try_start_5d
1987     monitor-exit v9
1988     :try_end_5e
1989     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
1991     throw v5
1993     :cond_5f
1994     const/16 v24, 0x0
1996     goto :goto_1a
1998     :cond_62
1999     :try_start_62
2000     invoke-interface/range {p1 .. p1}, Landroid/app/IApplicationThread;->scheduleExit()V
2001     :try_end_65
2002     .catch Ljava/lang/Exception; {:try_start_62 .. :try_end_65} :catch_66
2004     goto :goto_5a
2006     :catch_66
2007     move-exception v5
2009     goto :goto_5a
2011     :cond_68
2012     move-object/from16 v0, v24
2014     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
2016     if-eqz v5, :cond_77
2018     const/4 v5, 0x1
2020     const/4 v9, 0x1
2022     move-object/from16 v0, p0
2024     move-object/from16 v1, v24
2026     invoke-direct {v0, v1, v5, v9}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
2028     :cond_77
2029     move-object/from16 v0, v24
2031     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
2033     :try_start_7b
2034     new-instance v23, Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;
2036     move-object/from16 v0, v23
2038     move-object/from16 v1, p0
2040     move-object/from16 v2, v24
2042     move/from16 v3, p2
2044     move-object/from16 v4, p1
2046     invoke-direct {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
2048     invoke-interface/range {p1 .. p1}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
2050     move-result-object v5
2052     const/4 v9, 0x0
2054     move-object/from16 v0, v23
2056     invoke-interface {v5, v0, v9}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
2058     move-object/from16 v0, v23
2060     move-object/from16 v1, v24
2062     iput-object v0, v1, Lcom/android/server/am/ProcessRecord;->deathRecipient:Landroid/os/IBinder$DeathRecipient;
2063     :try_end_9a
2064     .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_9a} :catch_304
2066     const/16 v5, 0x753a
2068     const/4 v9, 0x2
2070     new-array v9, v9, [Ljava/lang/Object;
2072     const/4 v13, 0x0
2074     move-object/from16 v0, v24
2076     iget v14, v0, Lcom/android/server/am/ProcessRecord;->pid:I
2078     invoke-static {v14}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2080     move-result-object v14
2082     aput-object v14, v9, v13
2084     const/4 v13, 0x1
2086     move-object/from16 v0, v24
2088     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
2090     aput-object v14, v9, v13
2092     invoke-static {v5, v9}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
2094     move-object/from16 v0, p1
2096     move-object/from16 v1, v24
2098     iput-object v0, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
2100     const/16 v5, -0x64
2102     move-object/from16 v0, v24
2104     iput v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
2106     move-object/from16 v0, v24
2108     iput v5, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
2110     const/4 v5, -0x1
2112     move-object/from16 v0, v24
2114     iput v5, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
2116     const/4 v5, 0x0
2118     move-object/from16 v0, v24
2120     iput v5, v0, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
2122     const/4 v5, 0x0
2124     move-object/from16 v0, v24
2126     iput-object v5, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
2128     const/4 v5, 0x0
2130     move-object/from16 v0, v24
2132     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
2134     const/4 v5, 0x0
2136     move-object/from16 v0, v24
2138     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
2140     const/4 v5, 0x0
2142     move-object/from16 v0, v24
2144     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->debugging:Z
2146     move-object/from16 v0, p0
2148     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
2150     const/16 v9, 0x14
2152     move-object/from16 v0, v24
2154     invoke-virtual {v5, v9, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
2156     move-object/from16 v0, p0
2158     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
2160     if-nez v5, :cond_ff
2162     move-object/from16 v0, v24
2164     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2166     move-object/from16 v0, p0
2168     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
2170     move-result v5
2172     if-eqz v5, :cond_314
2174     :cond_ff
2175     const/16 v31, 0x1
2177     :goto_101
2178     if-eqz v31, :cond_318
2180     move-object/from16 v0, p0
2182     move-object/from16 v1, v24
2184     invoke-direct {v0, v1}, Lcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
2186     move-result-object v8
2188     :goto_10b
2189     if-nez v31, :cond_127
2191     const-string v5, "ActivityManager"
2193     new-instance v9, Ljava/lang/StringBuilder;
2195     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2197     const-string v13, "Launching preboot mode app: "
2199     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2201     move-result-object v9
2203     move-object/from16 v0, v24
2205     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
2207     move-result-object v9
2209     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2211     move-result-object v9
2213     invoke-static {v5, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
2215     :cond_127
2216     const/4 v15, 0x0
2218     :try_start_128
2219     move-object/from16 v0, p0
2221     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2223     if-eqz v5, :cond_15a
2225     move-object/from16 v0, p0
2227     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2229     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2231     move-result v5
2233     if-eqz v5, :cond_15a
2235     move-object/from16 v0, p0
2237     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
2239     if-eqz v5, :cond_31b
2241     const/4 v15, 0x2
2243     :goto_13f
2244     const/4 v5, 0x1
2246     move-object/from16 v0, v24
2248     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->debugging:Z
2250     move-object/from16 v0, p0
2252     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
2254     if-eqz v5, :cond_15a
2256     move-object/from16 v0, p0
2258     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
2260     move-object/from16 v0, p0
2262     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2264     move-object/from16 v0, p0
2266     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
2268     move-object/from16 v0, p0
2270     iput-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
2272     :cond_15a
2273     move-object/from16 v0, v24
2275     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
2277     const/4 v11, 0x0
2279     const/4 v12, 0x0
2281     move-object/from16 v0, p0
2283     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
2285     if-eqz v5, :cond_182
2287     move-object/from16 v0, p0
2289     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
2291     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2293     move-result v5
2295     if-eqz v5, :cond_182
2297     move-object/from16 v0, v24
2299     move-object/from16 v1, p0
2301     iput-object v0, v1, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
2303     move-object/from16 v0, p0
2305     iget-object v10, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
2307     move-object/from16 v0, p0
2309     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
2311     move-object/from16 v0, p0
2313     iget-boolean v12, v0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
2315     :cond_182
2316     const/16 v16, 0x0
2318     move-object/from16 v0, p0
2320     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2322     if-eqz v5, :cond_19b
2324     move-object/from16 v0, p0
2326     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2328     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2330     move-result v5
2332     if-eqz v5, :cond_19b
2334     const/16 v16, 0x1
2336     const/4 v5, 0x0
2338     move-object/from16 v0, p0
2340     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2342     :cond_19b
2343     const/16 v30, 0x0
2345     move-object/from16 v0, p0
2347     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2349     if-eqz v5, :cond_1ca
2351     move-object/from16 v0, p0
2353     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
2355     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2357     move-result v5
2359     if-eqz v5, :cond_1ca
2361     move-object/from16 v0, p0
2363     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2365     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2367     const/4 v9, 0x2
2369     if-eq v5, v9, :cond_1c8
2371     move-object/from16 v0, p0
2373     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2375     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2377     const/4 v9, 0x3
2379     if-eq v5, v9, :cond_1c8
2381     move-object/from16 v0, p0
2383     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2385     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2387     const/4 v9, 0x1
2389     if-ne v5, v9, :cond_31e
2391     :cond_1c8
2392     const/16 v30, 0x1
2394     :cond_1ca
2395     :goto_1ca
2396     move-object/from16 v0, v24
2398     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2400     if-eqz v5, :cond_322
2402     move-object/from16 v0, v24
2404     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2406     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
2408     :goto_1d6
2409     move-object/from16 v0, p0
2411     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
2413     move-object/from16 v0, v24
2415     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2417     if-eqz v5, :cond_1ee
2419     move-object/from16 v0, v24
2421     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2423     invoke-virtual {v5}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
2425     move-result-object v5
2427     move-object/from16 v0, p0
2429     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
2431     :cond_1ee
2432     move-object/from16 v0, v24
2434     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2436     if-eqz v5, :cond_32a
2438     move-object/from16 v0, v24
2440     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2442     :goto_1f8
2443     move-object/from16 v0, p0
2445     invoke-virtual {v0, v7}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
2447     move-result-object v5
2449     move-object/from16 v0, v24
2451     iput-object v5, v0, Lcom/android/server/am/ProcessRecord;->compat:Landroid/content/res/CompatibilityInfo;
2453     if-eqz v11, :cond_208
2455     invoke-virtual {v11}, Landroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor;
2457     move-result-object v11
2459     :cond_208
2460     move-object/from16 v0, v24
2462     iget-object v9, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2464     move-object/from16 v0, v24
2466     iget-object v13, v0, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
2468     move-object/from16 v0, v24
2470     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
2472     if-nez v30, :cond_218
2474     if-nez v31, :cond_330
2476     :cond_218
2477     const/16 v17, 0x1
2479     :goto_21a
2480     move-object/from16 v0, v24
2482     iget-boolean v0, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
2484     move/from16 v18, v0
2486     new-instance v19, Landroid/content/res/Configuration;
2488     move-object/from16 v0, p0
2490     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
2492     move-object/from16 v0, v19
2494     invoke-direct {v0, v5}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
2496     move-object/from16 v0, v24
2498     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->compat:Landroid/content/res/CompatibilityInfo;
2500     move-object/from16 v20, v0
2502     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getCommonServicesLocked()Ljava/util/HashMap;
2504     move-result-object v21
2506     move-object/from16 v0, p0
2508     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
2510     invoke-virtual {v5}, Lcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
2512     move-result-object v22
2514     move-object/from16 v5, p1
2516     invoke-interface/range {v5 .. v22}, Landroid/app/IApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;ZLandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;IZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;)V
2518     const/4 v5, 0x0
2520     const/4 v9, 0x1
2522     move-object/from16 v0, p0
2524     move-object/from16 v1, v24
2526     invoke-virtual {v0, v1, v5, v9}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
2528     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
2530     move-result-wide v13
2532     move-object/from16 v0, v24
2534     iput-wide v13, v0, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
2536     move-object/from16 v0, v24
2538     iput-wide v13, v0, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
2539     :try_end_257
2540     .catch Ljava/lang/Exception; {:try_start_128 .. :try_end_257} :catch_334
2542     move-object/from16 v0, p0
2544     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
2546     move-object/from16 v0, v24
2548     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
2550     move-object/from16 v0, p0
2552     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
2554     move-object/from16 v0, v24
2556     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
2558     const/16 v25, 0x0
2560     const/16 v26, 0x0
2562     move-object/from16 v0, p0
2564     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2566     const/4 v9, 0x0
2568     invoke-virtual {v5, v9}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
2570     move-result-object v28
2572     if-eqz v28, :cond_2b8
2574     if-eqz v31, :cond_2b8
2576     move-object/from16 v0, v28
2578     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
2580     if-nez v5, :cond_38f
2582     move-object/from16 v0, v24
2584     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
2586     move-object/from16 v0, v28
2588     iget-object v9, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
2590     iget-object v9, v9, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
2592     iget v9, v9, Landroid/content/pm/ApplicationInfo;->uid:I
2594     if-ne v5, v9, :cond_38f
2596     move-object/from16 v0, v28
2598     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->processName:Ljava/lang/String;
2600     invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2602     move-result v5
2604     if-eqz v5, :cond_38f
2606     :try_start_298
2607     move-object/from16 v0, p0
2609     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
2611     if-eqz v5, :cond_350
2613     const-string v5, "ActivityManager"
2615     new-instance v9, Ljava/lang/StringBuilder;
2617     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2619     const-string v13, "Starting activities not supported on headless device: "
2621     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2623     move-result-object v9
2625     move-object/from16 v0, v28
2627     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
2629     move-result-object v9
2631     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2633     move-result-object v9
2635     invoke-static {v5, v9}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
2636     :try_end_2b8
2637     .catch Ljava/lang/Exception; {:try_start_298 .. :try_end_2b8} :catch_364
2639     :cond_2b8
2640     :goto_2b8
2641     if-nez v25, :cond_3d5
2643     move-object/from16 v0, p0
2645     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
2647     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
2649     move-result v5
2651     if-lez v5, :cond_3d5
2653     const/16 v32, 0x0
2655     const/16 v29, 0x0
2657     :goto_2c8
2658     :try_start_2c8
2659     move-object/from16 v0, p0
2661     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
2663     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
2665     move-result v5
2667     move/from16 v0, v29
2669     if-ge v0, v5, :cond_3d5
2671     move-object/from16 v0, p0
2673     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
2675     move/from16 v0, v29
2677     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
2679     move-result-object v5
2681     move-object v0, v5
2683     check-cast v0, Lcom/android/server/am/ServiceRecord;
2685     move-object/from16 v32, v0
2687     move-object/from16 v0, v32
2689     iget-object v5, v0, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
2691     move-object/from16 v0, v24
2693     if-eq v0, v5, :cond_39c
2695     move-object/from16 v0, v24
2697     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
2699     move-object/from16 v0, v32
2701     iget-object v9, v0, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2703     iget v9, v9, Landroid/content/pm/ApplicationInfo;->uid:I
2705     if-ne v5, v9, :cond_301
2707     move-object/from16 v0, v32
2709     iget-object v5, v0, Lcom/android/server/am/ServiceRecord;->processName:Ljava/lang/String;
2711     invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2712     :try_end_2fe
2713     .catch Ljava/lang/Exception; {:try_start_2c8 .. :try_end_2fe} :catch_3b4
2715     move-result v5
2717     if-nez v5, :cond_39c
2719     :cond_301
2720     :goto_301
2721     add-int/lit8 v29, v29, 0x1
2723     goto :goto_2c8
2725     :catch_304
2726     move-exception v27
2728     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
2730     const-string v5, "link fail"
2732     move-object/from16 v0, p0
2734     move-object/from16 v1, v24
2736     invoke-direct {v0, v1, v5, v6}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
2738     const/4 v5, 0x0
2740     goto/16 :goto_5b
2742     :cond_314
2743     const/16 v31, 0x0
2745     goto/16 :goto_101
2747     :cond_318
2748     const/4 v8, 0x0
2750     goto/16 :goto_10b
2752     :cond_31b
2753     const/4 v15, 0x1
2755     goto/16 :goto_13f
2757     :cond_31e
2758     const/16 v30, 0x0
2760     goto/16 :goto_1ca
2762     :cond_322
2763     :try_start_322
2764     move-object/from16 v0, v24
2766     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2768     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
2770     goto/16 :goto_1d6
2772     :cond_32a
2773     move-object/from16 v0, v24
2775     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2776     :try_end_32e
2777     .catch Ljava/lang/Exception; {:try_start_322 .. :try_end_32e} :catch_334
2779     goto/16 :goto_1f8
2781     :cond_330
2782     const/16 v17, 0x0
2784     goto/16 :goto_21a
2786     :catch_334
2787     move-exception v27
2789     const-string v5, "ActivityManager"
2791     const-string v9, "Exception thrown during bind!"
2793     move-object/from16 v0, v27
2795     invoke-static {v5, v9, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2797     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
2799     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
2801     const-string v5, "bind fail"
2803     move-object/from16 v0, p0
2805     move-object/from16 v1, v24
2807     invoke-direct {v0, v1, v5, v6}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
2809     const/4 v5, 0x0
2811     goto/16 :goto_5b
2813     :cond_350
2814     :try_start_350
2815     move-object/from16 v0, p0
2817     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2819     const/4 v9, 0x1
2821     const/4 v13, 0x1
2823     move-object/from16 v0, v28
2825     move-object/from16 v1, v24
2827     invoke-virtual {v5, v0, v1, v9, v13}, Lcom/android/server/am/ActivityStack;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z
2828     :try_end_35d
2829     .catch Ljava/lang/Exception; {:try_start_350 .. :try_end_35d} :catch_364
2831     move-result v5
2833     if-eqz v5, :cond_2b8
2835     const/16 v26, 0x1
2837     goto/16 :goto_2b8
2839     :catch_364
2840     move-exception v27
2842     const-string v5, "ActivityManager"
2844     new-instance v9, Ljava/lang/StringBuilder;
2846     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2848     const-string v13, "Exception in new application when starting activity "
2850     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2852     move-result-object v9
2854     move-object/from16 v0, v28
2856     iget-object v13, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
2858     invoke-virtual {v13}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
2860     move-result-object v13
2862     invoke-virtual {v13}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
2864     move-result-object v13
2866     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2868     move-result-object v9
2870     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2872     move-result-object v9
2874     move-object/from16 v0, v27
2876     invoke-static {v5, v9, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2878     const/16 v25, 0x1
2880     goto/16 :goto_2b8
2882     :cond_38f
2883     move-object/from16 v0, p0
2885     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2887     const/4 v9, 0x0
2889     const/4 v13, 0x0
2891     move-object/from16 v0, v28
2893     invoke-virtual {v5, v0, v9, v6, v13}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I)V
2895     goto/16 :goto_2b8
2897     :cond_39c
2898     :try_start_39c
2899     move-object/from16 v0, p0
2901     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
2903     move/from16 v0, v29
2905     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
2907     add-int/lit8 v29, v29, -0x1
2909     move-object/from16 v0, p0
2911     move-object/from16 v1, v32
2913     move-object/from16 v2, v24
2915     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;)V
2916     :try_end_3b0
2917     .catch Ljava/lang/Exception; {:try_start_39c .. :try_end_3b0} :catch_3b4
2919     const/16 v26, 0x1
2921     goto/16 :goto_301
2923     :catch_3b4
2924     move-exception v27
2926     const-string v5, "ActivityManager"
2928     new-instance v9, Ljava/lang/StringBuilder;
2930     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2932     const-string v13, "Exception in new application when starting service "
2934     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2936     move-result-object v9
2938     move-object/from16 v0, v32
2940     iget-object v13, v0, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
2942     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2944     move-result-object v9
2946     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2948     move-result-object v9
2950     move-object/from16 v0, v27
2952     invoke-static {v5, v9, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2954     const/16 v25, 0x1
2956     :cond_3d5
2957     if-nez v25, :cond_3e9
2959     move-object/from16 v0, p0
2961     move/from16 v1, p2
2963     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
2965     move-result v5
2967     if-eqz v5, :cond_3e9
2969     :try_start_3e1
2970     move-object/from16 v0, p0
2972     move-object/from16 v1, v24
2974     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
2975     :try_end_3e8
2976     .catch Ljava/lang/Exception; {:try_start_3e1 .. :try_end_3e8} :catch_437
2978     move-result v26
2980     :cond_3e9
2981     :goto_3e9
2982     if-nez v25, :cond_429
2984     move-object/from16 v0, p0
2986     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2988     if-eqz v5, :cond_429
2990     move-object/from16 v0, p0
2992     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2994     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2996     iget v5, v5, Landroid/content/pm/ApplicationInfo;->uid:I
2998     move-object/from16 v0, v24
3000     iget v9, v0, Lcom/android/server/am/ProcessRecord;->uid:I
3002     if-ne v5, v9, :cond_429
3004     move-object/from16 v0, p0
3006     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
3008     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3010     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
3012     move-object/from16 v0, p0
3014     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
3016     :try_start_40c
3017     move-object/from16 v0, p0
3019     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
3021     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3023     move-object/from16 v0, p0
3025     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
3027     iget-object v9, v9, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3029     move-object/from16 v0, p0
3031     invoke-virtual {v0, v9}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
3033     move-result-object v9
3035     move-object/from16 v0, p0
3037     iget-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
3039     iget v13, v13, Lcom/android/server/am/BackupRecord;->backupMode:I
3041     move-object/from16 v0, p1
3043     invoke-interface {v0, v5, v9, v13}, Landroid/app/IApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
3044     :try_end_429
3045     .catch Ljava/lang/Exception; {:try_start_40c .. :try_end_429} :catch_43b
3047     :cond_429
3048     :goto_429
3049     if-eqz v25, :cond_447
3051     const/4 v5, 0x0
3053     const/4 v9, 0x1
3055     move-object/from16 v0, p0
3057     move-object/from16 v1, v24
3059     invoke-direct {v0, v1, v5, v9}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
3061     const/4 v5, 0x0
3063     goto/16 :goto_5b
3065     :catch_437
3066     move-exception v27
3068     const/16 v25, 0x1
3070     goto :goto_3e9
3072     :catch_43b
3073     move-exception v27
3075     const-string v5, "ActivityManager"
3077     const-string v9, "Exception scheduling backup agent creation: "
3079     invoke-static {v5, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3081     invoke-virtual/range {v27 .. v27}, Ljava/lang/Exception;->printStackTrace()V
3083     goto :goto_429
3085     :cond_447
3086     if-nez v26, :cond_44c
3088     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
3090     :cond_44c
3091     const/4 v5, 0x1
3093     goto/16 :goto_5b
3094 .end method
3096 .method private final bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
3097     .registers 16
3099     if-nez p2, :cond_7
3101     iget-boolean v9, p1, Lcom/android/server/am/ServiceRecord;->startRequested:Z
3103     if-eqz v9, :cond_7
3105     :cond_6
3106     :goto_6
3107     return-void
3109     :cond_7
3110     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
3112     invoke-virtual {v9}, Ljava/util/HashMap;->size()I
3114     move-result v9
3116     if-lez v9, :cond_bc
3118     if-nez p2, :cond_3d
3120     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
3122     invoke-virtual {v9}, Ljava/util/HashMap;->values()Ljava/util/Collection;
3124     move-result-object v9
3126     invoke-interface {v9}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
3128     move-result-object v8
3130     :cond_1b
3131     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
3133     move-result v9
3135     if-eqz v9, :cond_3d
3137     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
3139     move-result-object v3
3141     check-cast v3, Ljava/util/ArrayList;
3143     const/4 v5, 0x0
3145     :goto_28
3146     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
3148     move-result v9
3150     if-ge v5, v9, :cond_1b
3152     invoke-virtual {v3, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3154     move-result-object v9
3156     check-cast v9, Lcom/android/server/am/ConnectionRecord;
3158     iget v9, v9, Lcom/android/server/am/ConnectionRecord;->flags:I
3160     and-int/lit8 v9, v9, 0x1
3162     if-nez v9, :cond_6
3164     add-int/lit8 v5, v5, 0x1
3166     goto :goto_28
3168     :cond_3d
3169     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
3171     invoke-virtual {v9}, Ljava/util/HashMap;->values()Ljava/util/Collection;
3173     move-result-object v9
3175     invoke-interface {v9}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
3177     move-result-object v8
3179     :cond_47
3180     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
3182     move-result v9
3184     if-eqz v9, :cond_bc
3186     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
3188     move-result-object v1
3190     check-cast v1, Ljava/util/ArrayList;
3192     const/4 v5, 0x0
3194     :goto_54
3195     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
3197     move-result v9
3199     if-ge v5, v9, :cond_47
3201     invoke-virtual {v1, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3203     move-result-object v2
3205     check-cast v2, Lcom/android/server/am/ConnectionRecord;
3207     const/4 v9, 0x1
3209     iput-boolean v9, v2, Lcom/android/server/am/ConnectionRecord;->serviceDead:Z
3211     :try_start_63
3212     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
3214     iget-object v10, p1, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
3216     const/4 v11, 0x0
3218     invoke-interface {v9, v10, v11}, Landroid/app/IServiceConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
3219     :try_end_6b
3220     .catch Ljava/lang/Exception; {:try_start_63 .. :try_end_6b} :catch_6e
3222     :goto_6b
3223     add-int/lit8 v5, v5, 0x1
3225     goto :goto_54
3227     :catch_6e
3228     move-exception v4
3230     const-string v10, "ActivityManager"
3232     new-instance v9, Ljava/lang/StringBuilder;
3234     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
3236     const-string v11, "Failure disconnecting service "
3238     invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3240     move-result-object v9
3242     iget-object v11, p1, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
3244     invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3246     move-result-object v9
3248     const-string v11, " to connection "
3250     invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3252     move-result-object v11
3254     invoke-virtual {v1, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3256     move-result-object v9
3258     check-cast v9, Lcom/android/server/am/ConnectionRecord;
3260     iget-object v9, v9, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
3262     invoke-interface {v9}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
3264     move-result-object v9
3266     invoke-virtual {v11, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3268     move-result-object v9
3270     const-string v11, " (in "
3272     invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3274     move-result-object v11
3276     invoke-virtual {v1, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3278     move-result-object v9
3280     check-cast v9, Lcom/android/server/am/ConnectionRecord;
3282     iget-object v9, v9, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
3284     iget-object v9, v9, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
3286     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
3288     invoke-virtual {v11, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3290     move-result-object v9
3292     const-string v11, ")"
3294     invoke-virtual {v9, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3296     move-result-object v9
3298     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3300     move-result-object v9
3302     invoke-static {v10, v9, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3304     goto :goto_6b
3306     :cond_bc
3307     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
3309     invoke-virtual {v9}, Ljava/util/HashMap;->size()I
3311     move-result v9
3313     if-lez v9, :cond_12d
3315     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3317     if-eqz v9, :cond_12d
3319     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3321     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3323     if-eqz v9, :cond_12d
3325     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
3327     invoke-virtual {v9}, Ljava/util/HashMap;->values()Ljava/util/Collection;
3329     move-result-object v9
3331     invoke-interface {v9}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
3333     move-result-object v7
3335     :cond_d8
3336     :goto_d8
3337     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
3339     move-result v9
3341     if-eqz v9, :cond_12d
3343     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
3345     move-result-object v6
3347     check-cast v6, Lcom/android/server/am/IntentBindRecord;
3349     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3351     if-eqz v9, :cond_d8
3353     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3355     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3357     if-eqz v9, :cond_d8
3359     iget-boolean v9, v6, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
3361     if-eqz v9, :cond_d8
3363     :try_start_f2
3364     const-string v9, "bring down unbind"
3366     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
3368     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3370     invoke-direct {p0, v9}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
3372     const/4 v9, 0x0
3374     iput-boolean v9, v6, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
3376     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3378     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3380     iget-object v10, v6, Lcom/android/server/am/IntentBindRecord;->intent:Landroid/content/Intent$FilterComparison;
3382     invoke-virtual {v10}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
3384     move-result-object v10
3386     invoke-interface {v9, p1, v10}, Landroid/app/IApplicationThread;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V
3387     :try_end_10c
3388     .catch Ljava/lang/Exception; {:try_start_f2 .. :try_end_10c} :catch_10d
3390     goto :goto_d8
3392     :catch_10d
3393     move-exception v4
3395     const-string v9, "ActivityManager"
3397     new-instance v10, Ljava/lang/StringBuilder;
3399     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
3401     const-string v11, "Exception when unbinding service "
3403     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3405     move-result-object v10
3407     iget-object v11, p1, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
3409     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3411     move-result-object v10
3413     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3415     move-result-object v10
3417     invoke-static {v9, v10, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3419     const/4 v9, 0x1
3421     invoke-virtual {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
3423     goto :goto_d8
3425     :cond_12d
3426     const/16 v10, 0x754f
3428     const/4 v9, 0x3
3430     new-array v11, v9, [Ljava/lang/Object;
3432     const/4 v9, 0x0
3434     invoke-static {p1}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
3436     move-result v12
3438     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
3440     move-result-object v12
3442     aput-object v12, v11, v9
3444     const/4 v9, 0x1
3446     iget-object v12, p1, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
3448     aput-object v12, v11, v9
3450     const/4 v12, 0x2
3452     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3454     if-eqz v9, :cond_189
3456     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3458     iget v9, v9, Lcom/android/server/am/ProcessRecord;->pid:I
3460     :goto_14b
3461     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
3463     move-result-object v9
3465     aput-object v9, v11, v12
3467     invoke-static {v10, v11}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
3469     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
3471     iget-object v10, p1, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
3473     iget v11, p1, Lcom/android/server/am/ServiceRecord;->userId:I
3475     invoke-virtual {v9, v10, v11}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->removeServiceByName(Landroid/content/ComponentName;I)V
3477     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
3479     iget-object v10, p1, Lcom/android/server/am/ServiceRecord;->intent:Landroid/content/Intent$FilterComparison;
3481     iget v11, p1, Lcom/android/server/am/ServiceRecord;->userId:I
3483     invoke-virtual {v9, v10, v11}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->removeServiceByIntent(Landroid/content/Intent$FilterComparison;I)V
3485     const/4 v9, 0x0
3487     iput v9, p1, Lcom/android/server/am/ServiceRecord;->totalRestartCount:I
3489     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)Z
3491     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
3493     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
3495     move-result v0
3497     const/4 v5, 0x0
3499     :goto_173
3500     if-ge v5, v0, :cond_18b
3502     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
3504     invoke-virtual {v9, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3506     move-result-object v9
3508     if-ne v9, p1, :cond_186
3510     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
3512     invoke-virtual {v9, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
3514     add-int/lit8 v5, v5, -0x1
3516     add-int/lit8 v0, v0, -0x1
3518     :cond_186
3519     add-int/lit8 v5, v5, 0x1
3521     goto :goto_173
3523     :cond_189
3524     const/4 v9, -0x1
3526     goto :goto_14b
3528     :cond_18b
3529     invoke-virtual {p1}, Lcom/android/server/am/ServiceRecord;->cancelNotification()V
3531     const/4 v9, 0x0
3533     iput-boolean v9, p1, Lcom/android/server/am/ServiceRecord;->isForeground:Z
3535     const/4 v9, 0x0
3537     iput v9, p1, Lcom/android/server/am/ServiceRecord;->foregroundId:I
3539     const/4 v9, 0x0
3541     iput-object v9, p1, Lcom/android/server/am/ServiceRecord;->foregroundNoti:Landroid/app/Notification;
3543     invoke-virtual {p1}, Lcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
3545     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
3547     invoke-virtual {v9}, Ljava/util/ArrayList;->clear()V
3549     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3551     if-eqz v9, :cond_1d9
3553     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
3555     invoke-virtual {v9}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
3557     move-result-object v10
3559     monitor-enter v10
3561     :try_start_1aa
3562     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
3564     invoke-virtual {v9}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked()V
3566     monitor-exit v10
3567     :try_end_1b0
3568     .catchall {:try_start_1aa .. :try_end_1b0} :catchall_1f6
3570     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3572     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
3574     invoke-virtual {v9, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
3576     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3578     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3580     if-eqz v9, :cond_1d9
3582     :try_start_1bd
3583     const-string v9, "stop"
3585     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
3587     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
3589     invoke-virtual {v9, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
3591     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3593     invoke-direct {p0, v9}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
3595     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3597     iget-object v9, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3599     invoke-interface {v9, p1}, Landroid/app/IApplicationThread;->scheduleStopService(Landroid/os/IBinder;)V
3600     :try_end_1d3
3601     .catch Ljava/lang/Exception; {:try_start_1bd .. :try_end_1d3} :catch_1f9
3603     :goto_1d3
3604     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3606     const/4 v10, 0x0
3608     invoke-virtual {p0, v9, v10}, Lcom/android/server/am/ActivityManagerService;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
3610     :cond_1d9
3611     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
3613     invoke-virtual {v9}, Ljava/util/HashMap;->size()I
3615     move-result v9
3617     if-lez v9, :cond_1e6
3619     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
3621     invoke-virtual {v9}, Ljava/util/HashMap;->clear()V
3623     :cond_1e6
3624     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->restarter:Ljava/lang/Runnable;
3626     instance-of v9, v9, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;
3628     if-eqz v9, :cond_6
3630     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->restarter:Ljava/lang/Runnable;
3632     check-cast v9, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;
3634     const/4 v10, 0x0
3636     invoke-virtual {v9, v10}, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
3638     goto/16 :goto_6
3640     :catchall_1f6
3641     move-exception v9
3643     :try_start_1f7
3644     monitor-exit v10
3645     :try_end_1f8
3646     .catchall {:try_start_1f7 .. :try_end_1f8} :catchall_1f6
3648     throw v9
3650     :catch_1f9
3651     move-exception v4
3653     const-string v9, "ActivityManager"
3655     new-instance v10, Ljava/lang/StringBuilder;
3657     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
3659     const-string v11, "Exception when stopping service "
3661     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3663     move-result-object v10
3665     iget-object v11, p1, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
3667     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3669     move-result-object v10
3671     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3673     move-result-object v10
3675     invoke-static {v9, v10, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3677     const/4 v9, 0x1
3679     invoke-virtual {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
3681     goto :goto_1d3
3682 .end method
3684 .method private final bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
3685     .registers 15
3687     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3689     if-eqz v0, :cond_10
3691     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
3693     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3695     if-eqz v0, :cond_10
3697     const/4 v0, 0x0
3699     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;Z)V
3701     const/4 v0, 0x1
3703     :goto_f
3704     return v0
3706     :cond_10
3707     if-nez p3, :cond_1c
3709     iget-wide v2, p1, Lcom/android/server/am/ServiceRecord;->restartDelay:J
3711     const-wide/16 v4, 0x0
3713     cmp-long v0, v2, v4
3715     if-lez v0, :cond_1c
3717     const/4 v0, 0x1
3719     goto :goto_f
3721     :cond_1c
3722     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
3724     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
3726     :try_start_21
3727     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
3729     move-result-object v0
3731     iget-object v2, p1, Lcom/android/server/am/ServiceRecord;->packageName:Ljava/lang/String;
3733     const/4 v3, 0x0
3735     iget v4, p1, Lcom/android/server/am/ServiceRecord;->userId:I
3737     invoke-interface {v0, v2, v3, v4}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
3738     :try_end_2d
3739     .catch Landroid/os/RemoteException; {:try_start_21 .. :try_end_2d} :catch_107
3740     .catch Ljava/lang/IllegalArgumentException; {:try_start_21 .. :try_end_2d} :catch_54
3742     :goto_2d
3743     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
3745     iget v0, v0, Landroid/content/pm/ServiceInfo;->flags:I
3747     and-int/lit8 v0, v0, 0x2
3749     if-eqz v0, :cond_7a
3751     const/4 v8, 0x1
3753     :goto_36
3754     iget-object v1, p1, Lcom/android/server/am/ServiceRecord;->processName:Ljava/lang/String;
3756     if-nez v8, :cond_f0
3758     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3760     iget v0, v0, Landroid/content/pm/ApplicationInfo;->uid:I
3762     invoke-virtual {p0, v1, v0}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
3764     move-result-object v9
3766     if-eqz v9, :cond_97
3768     iget-object v0, v9, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
3770     if-eqz v0, :cond_97
3772     :try_start_48
3773     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3775     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
3777     invoke-virtual {v9, v0}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
3779     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;)V
3780     :try_end_52
3781     .catch Landroid/os/RemoteException; {:try_start_48 .. :try_end_52} :catch_7c
3783     const/4 v0, 0x1
3785     goto :goto_f
3787     :catch_54
3788     move-exception v10
3790     const-string v0, "ActivityManager"
3792     new-instance v2, Ljava/lang/StringBuilder;
3794     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
3796     const-string v3, "Failed trying to unstop package "
3798     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3800     move-result-object v2
3802     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->packageName:Ljava/lang/String;
3804     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3806     move-result-object v2
3808     const-string v3, ": "
3810     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3812     move-result-object v2
3814     invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3816     move-result-object v2
3818     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3820     move-result-object v2
3822     invoke-static {v0, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3824     goto :goto_2d
3826     :cond_7a
3827     const/4 v8, 0x0
3829     goto :goto_36
3831     :catch_7c
3832     move-exception v10
3834     const-string v0, "ActivityManager"
3836     new-instance v2, Ljava/lang/StringBuilder;
3838     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
3840     const-string v3, "Exception when starting service "
3842     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3844     move-result-object v2
3846     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
3848     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3850     move-result-object v2
3852     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3854     move-result-object v2
3856     invoke-static {v0, v2, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3858     :cond_97
3859     :goto_97
3860     if-nez v9, :cond_f7
3862     iget-object v2, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3864     const/4 v3, 0x1
3866     const-string v5, "service"
3868     iget-object v6, p1, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
3870     const/4 v7, 0x0
3872     move-object v0, p0
3874     move v4, p2
3876     invoke-virtual/range {v0 .. v8}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
3878     move-result-object v9
3880     if-nez v9, :cond_f3
3882     const-string v0, "ActivityManager"
3884     new-instance v2, Ljava/lang/StringBuilder;
3886     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
3888     const-string v3, "Unable to launch app "
3890     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3892     move-result-object v2
3894     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3896     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
3898     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3900     move-result-object v2
3902     const-string v3, "/"
3904     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3906     move-result-object v2
3908     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
3910     iget v3, v3, Landroid/content/pm/ApplicationInfo;->uid:I
3912     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3914     move-result-object v2
3916     const-string v3, " for service "
3918     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3920     move-result-object v2
3922     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->intent:Landroid/content/Intent$FilterComparison;
3924     invoke-virtual {v3}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
3926     move-result-object v3
3928     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3930     move-result-object v2
3932     const-string v3, ": process is bad"
3934     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3936     move-result-object v2
3938     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3940     move-result-object v2
3942     invoke-static {v0, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3944     const/4 v0, 0x1
3946     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
3948     const/4 v0, 0x0
3950     goto/16 :goto_f
3952     :cond_f0
3953     iget-object v9, p1, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
3955     goto :goto_97
3957     :cond_f3
3958     if-eqz v8, :cond_f7
3960     iput-object v9, p1, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
3962     :cond_f7
3963     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
3965     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
3967     move-result v0
3969     if-nez v0, :cond_104
3971     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
3973     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
3975     :cond_104
3976     const/4 v0, 0x1
3978     goto/16 :goto_f
3980     :catch_107
3981     move-exception v0
3983     goto/16 :goto_2d
3984 .end method
3986 .method private final broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
3987     .registers 77
3989     new-instance v44, Landroid/content/Intent;
3991     move-object/from16 v0, v44
3993     move-object/from16 v1, p3
3995     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
3997     const/16 v3, 0x10
3999     move-object/from16 v0, v44
4001     invoke-virtual {v0, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
4003     if-eqz p5, :cond_34
4005     if-nez p10, :cond_34
4007     const-string v3, "ActivityManager"
4009     new-instance v5, Ljava/lang/StringBuilder;
4011     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
4013     const-string v9, "Broadcast "
4015     invoke-virtual {v5, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4017     move-result-object v5
4019     move-object/from16 v0, v44
4021     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
4023     move-result-object v5
4025     const-string v9, " not ordered but result callback requested!"
4027     invoke-virtual {v5, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4029     move-result-object v5
4031     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4033     move-result-object v5
4035     invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
4037     :cond_34
4038     const-string v3, "android.intent.action.UID_REMOVED"
4040     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4042     move-result-object v5
4044     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4046     move-result v61
4048     const-string v3, "android.intent.action.PACKAGE_REMOVED"
4050     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4052     move-result-object v5
4054     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4056     move-result v3
4058     if-nez v3, :cond_64
4060     const-string v3, "android.intent.action.PACKAGE_CHANGED"
4062     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4064     move-result-object v5
4066     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4068     move-result v3
4070     if-nez v3, :cond_64
4072     const-string v3, "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"
4074     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4076     move-result-object v5
4078     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4080     move-result v3
4082     if-nez v3, :cond_64
4084     if-eqz v61, :cond_237
4086     :cond_64
4087     const-string v4, "android.permission.BROADCAST_PACKAGE_REMOVED"
4089     const/4 v7, -0x1
4091     const/4 v8, 0x1
4093     move-object/from16 v3, p0
4095     move/from16 v5, p12
4097     move/from16 v6, p13
4099     invoke-virtual/range {v3 .. v8}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
4101     move-result v3
4103     if-nez v3, :cond_1db
4105     if-eqz v61, :cond_151
4107     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle;
4109     move-result-object v45
4111     if-eqz v45, :cond_14a
4113     const-string v3, "android.intent.extra.UID"
4115     move-object/from16 v0, v45
4117     invoke-virtual {v0, v3}, Landroid/os/Bundle;->getInt(Ljava/lang/String;)I
4119     move-result v60
4121     :goto_84
4122     if-ltz v60, :cond_97
4124     move-object/from16 v0, p0
4126     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
4128     invoke-virtual {v3}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
4130     move-result-object v37
4132     monitor-enter v37
4134     :try_start_8f
4135     move-object/from16 v0, v37
4137     move/from16 v1, v60
4139     invoke-virtual {v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->removeUidStatsLocked(I)V
4141     monitor-exit v37
4142     :try_end_97
4143     .catchall {:try_start_8f .. :try_end_97} :catchall_14e
4145     :cond_97
4146     :goto_97
4147     const-string v3, "android.intent.action.TIMEZONE_CHANGED"
4149     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4151     move-result-object v5
4153     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4155     move-result v3
4157     if-eqz v3, :cond_ac
4159     move-object/from16 v0, p0
4161     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
4163     const/16 v5, 0xd
4165     invoke-virtual {v3, v5}, Landroid/os/Handler;->sendEmptyMessage(I)Z
4167     :cond_ac
4168     const-string v3, "android.intent.action.CLEAR_DNS_CACHE"
4170     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4172     move-result-object v5
4174     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4176     move-result v3
4178     if-eqz v3, :cond_c1
4180     move-object/from16 v0, p0
4182     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
4184     const/16 v5, 0x1c
4186     invoke-virtual {v3, v5}, Landroid/os/Handler;->sendEmptyMessage(I)Z
4188     :cond_c1
4189     const-string v3, "android.intent.action.PROXY_CHANGE"
4191     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4193     move-result-object v5
4195     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4197     move-result v3
4199     if-eqz v3, :cond_ea
4201     const-string v3, "proxy"
4203     move-object/from16 v0, v44
4205     invoke-virtual {v0, v3}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;
4207     move-result-object v53
4209     check-cast v53, Landroid/net/ProxyProperties;
4211     move-object/from16 v0, p0
4213     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
4215     move-object/from16 v0, p0
4217     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
4219     const/16 v9, 0x1d
4221     move-object/from16 v0, v53
4223     invoke-virtual {v5, v9, v0}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
4225     move-result-object v5
4227     invoke-virtual {v3, v5}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
4229     :cond_ea
4230     const/16 v3, 0x3e8
4232     move/from16 v0, p13
4234     if-eq v0, v3, :cond_fe
4236     const/16 v3, 0x3e9
4238     move/from16 v0, p13
4240     if-eq v0, v3, :cond_fe
4242     const/16 v3, 0x7d0
4244     move/from16 v0, p13
4246     if-eq v0, v3, :cond_fe
4248     if-nez p13, :cond_261
4250     :cond_fe
4251     if-eqz p11, :cond_359
4253     const-string v3, "android.permission.BROADCAST_STICKY"
4255     move-object/from16 v0, p0
4257     move/from16 v1, p12
4259     move/from16 v2, p13
4261     invoke-virtual {v0, v3, v1, v2}, Lcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
4263     move-result v3
4265     if-eqz v3, :cond_2c1
4267     new-instance v3, Ljava/lang/StringBuilder;
4269     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
4271     const-string v5, "Permission Denial: broadcastIntent() requesting a sticky broadcast from pid="
4273     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4275     move-result-object v3
4277     move/from16 v0, p12
4279     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4281     move-result-object v3
4283     const-string v5, ", uid="
4285     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4287     move-result-object v3
4289     move/from16 v0, p13
4291     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4293     move-result-object v3
4295     const-string v5, " requires "
4297     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4299     move-result-object v3
4301     const-string v5, "android.permission.BROADCAST_STICKY"
4303     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4305     move-result-object v3
4307     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4309     move-result-object v51
4311     const-string v3, "ActivityManager"
4313     move-object/from16 v0, v51
4315     invoke-static {v3, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
4317     new-instance v3, Ljava/lang/SecurityException;
4319     move-object/from16 v0, v51
4321     invoke-direct {v3, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
4323     throw v3
4325     :cond_14a
4326     const/16 v60, -0x1
4328     goto/16 :goto_84
4330     :catchall_14e
4331     move-exception v3
4333     :try_start_14f
4334     monitor-exit v37
4335     :try_end_150
4336     .catchall {:try_start_14f .. :try_end_150} :catchall_14e
4338     throw v3
4340     :cond_151
4341     const-string v3, "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"
4343     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4345     move-result-object v5
4347     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4349     move-result v3
4351     if-eqz v3, :cond_196
4353     const-string v3, "android.intent.extra.changed_package_list"
4355     move-object/from16 v0, v44
4357     invoke-virtual {v0, v3}, Landroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;
4359     move-result-object v49
4361     if-eqz v49, :cond_97
4363     move-object/from16 v0, v49
4365     array-length v3, v0
4367     if-lez v3, :cond_97
4369     move-object/from16 v36, v49
4371     move-object/from16 v0, v36
4373     array-length v0, v0
4375     move/from16 v48, v0
4377     const/16 v43, 0x0
4379     :goto_175
4380     move/from16 v0, v43
4382     move/from16 v1, v48
4384     if-ge v0, v1, :cond_18c
4386     aget-object v4, v36, v43
4388     const/4 v5, -0x1
4390     const/4 v6, 0x0
4392     const/4 v7, 0x1
4394     const/4 v8, 0x1
4396     const/4 v9, 0x0
4398     move-object/from16 v3, p0
4400     move/from16 v10, p14
4402     invoke-direct/range {v3 .. v10}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
4404     add-int/lit8 v43, v43, 0x1
4406     goto :goto_175
4408     :cond_18c
4409     const/4 v3, 0x1
4411     move-object/from16 v0, p0
4413     move-object/from16 v1, v49
4415     invoke-direct {v0, v3, v1}, Lcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;)V
4417     goto/16 :goto_97
4419     :cond_196
4420     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getData()Landroid/net/Uri;
4422     move-result-object v40
4424     if-eqz v40, :cond_97
4426     invoke-virtual/range {v40 .. v40}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
4428     move-result-object v6
4430     if-eqz v6, :cond_97
4432     const-string v3, "android.intent.extra.DONT_KILL_APP"
4434     const/4 v5, 0x0
4436     move-object/from16 v0, v44
4438     invoke-virtual {v0, v3, v5}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
4440     move-result v3
4442     if-nez v3, :cond_1c1
4444     const-string v3, "android.intent.extra.UID"
4446     const/4 v5, -0x1
4448     move-object/from16 v0, v44
4450     invoke-virtual {v0, v3, v5}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
4452     move-result v7
4454     const/4 v8, 0x0
4456     const/4 v9, 0x1
4458     const/4 v10, 0x1
4460     const/4 v11, 0x0
4462     move-object/from16 v5, p0
4464     move/from16 v12, p14
4466     invoke-direct/range {v5 .. v12}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
4468     :cond_1c1
4469     const-string v3, "android.intent.action.PACKAGE_REMOVED"
4471     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4473     move-result-object v5
4475     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4477     move-result v3
4479     if-eqz v3, :cond_97
4481     const/4 v3, 0x0
4483     const/4 v5, 0x1
4485     new-array v5, v5, [Ljava/lang/String;
4487     const/4 v9, 0x0
4489     aput-object v6, v5, v9
4491     move-object/from16 v0, p0
4493     invoke-direct {v0, v3, v5}, Lcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;)V
4495     goto/16 :goto_97
4497     :cond_1db
4498     new-instance v3, Ljava/lang/StringBuilder;
4500     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
4502     const-string v5, "Permission Denial: "
4504     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4506     move-result-object v3
4508     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4510     move-result-object v5
4512     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4514     move-result-object v3
4516     const-string v5, " broadcast from "
4518     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4520     move-result-object v3
4522     move-object/from16 v0, p2
4524     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4526     move-result-object v3
4528     const-string v5, " (pid="
4530     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4532     move-result-object v3
4534     move/from16 v0, p12
4536     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4538     move-result-object v3
4540     const-string v5, ", uid="
4542     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4544     move-result-object v3
4546     move/from16 v0, p13
4548     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4550     move-result-object v3
4552     const-string v5, ")"
4554     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4556     move-result-object v3
4558     const-string v5, " requires "
4560     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4562     move-result-object v3
4564     const-string v5, "android.permission.BROADCAST_PACKAGE_REMOVED"
4566     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4568     move-result-object v3
4570     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4572     move-result-object v51
4574     const-string v3, "ActivityManager"
4576     move-object/from16 v0, v51
4578     invoke-static {v3, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
4580     new-instance v3, Ljava/lang/SecurityException;
4582     move-object/from16 v0, v51
4584     invoke-direct {v3, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
4586     throw v3
4588     :cond_237
4589     const-string v3, "android.intent.action.PACKAGE_ADDED"
4591     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4593     move-result-object v5
4595     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4597     move-result v3
4599     if-eqz v3, :cond_97
4601     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getData()Landroid/net/Uri;
4603     move-result-object v40
4605     if-eqz v40, :cond_97
4607     invoke-virtual/range {v40 .. v40}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
4609     move-result-object v6
4611     if-eqz v6, :cond_97
4613     move-object/from16 v0, p0
4615     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
4617     const-string v5, "android.intent.extra.REPLACING"
4619     const/4 v9, 0x0
4621     move-object/from16 v0, v44
4623     invoke-virtual {v0, v5, v9}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
4625     move-result v5
4627     invoke-virtual {v3, v6, v5}, Lcom/android/server/am/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V
4629     goto/16 :goto_97
4631     :cond_261
4632     if-eqz p1, :cond_269
4634     move-object/from16 v0, p1
4636     iget-boolean v3, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
4638     if-nez v3, :cond_fe
4640     :cond_269
4641     :try_start_269
4642     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
4644     move-result-object v3
4646     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4648     move-result-object v5
4650     invoke-interface {v3, v5}, Landroid/content/pm/IPackageManager;->isProtectedBroadcast(Ljava/lang/String;)Z
4652     move-result v3
4654     if-eqz v3, :cond_fe
4656     new-instance v3, Ljava/lang/StringBuilder;
4658     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
4660     const-string v5, "Permission Denial: not allowed to send broadcast "
4662     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4664     move-result-object v3
4666     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4668     move-result-object v5
4670     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4672     move-result-object v3
4674     const-string v5, " from pid="
4676     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4678     move-result-object v3
4680     move/from16 v0, p12
4682     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4684     move-result-object v3
4686     const-string v5, ", uid="
4688     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4690     move-result-object v3
4692     move/from16 v0, p13
4694     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4696     move-result-object v3
4698     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4700     move-result-object v51
4702     const-string v3, "ActivityManager"
4704     move-object/from16 v0, v51
4706     invoke-static {v3, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
4708     new-instance v3, Ljava/lang/SecurityException;
4710     move-object/from16 v0, v51
4712     invoke-direct {v3, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
4714     throw v3
4715     :try_end_2b5
4716     .catch Landroid/os/RemoteException; {:try_start_269 .. :try_end_2b5} :catch_2b5
4718     :catch_2b5
4719     move-exception v41
4721     const-string v3, "ActivityManager"
4723     const-string v5, "Remote exception"
4725     move-object/from16 v0, v41
4727     invoke-static {v3, v5, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
4729     const/4 v3, 0x0
4731     :goto_2c0
4732     return v3
4734     :cond_2c1
4735     if-eqz p9, :cond_2eb
4737     const-string v3, "ActivityManager"
4739     new-instance v5, Ljava/lang/StringBuilder;
4741     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
4743     const-string v9, "Can\'t broadcast sticky intent "
4745     invoke-virtual {v5, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4747     move-result-object v5
4749     move-object/from16 v0, v44
4751     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
4753     move-result-object v5
4755     const-string v9, " and enforce permission "
4757     invoke-virtual {v5, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4759     move-result-object v5
4761     move-object/from16 v0, p9
4763     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4765     move-result-object v5
4767     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4769     move-result-object v5
4771     invoke-static {v3, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
4773     const/4 v3, -0x1
4775     goto :goto_2c0
4777     :cond_2eb
4778     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
4780     move-result-object v3
4782     if-eqz v3, :cond_2f9
4784     new-instance v3, Ljava/lang/SecurityException;
4786     const-string v5, "Sticky broadcasts can\'t target a specific component"
4788     invoke-direct {v3, v5}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
4790     throw v3
4792     :cond_2f9
4793     move-object/from16 v0, p0
4795     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
4797     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4799     move-result-object v5
4801     invoke-virtual {v3, v5}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
4803     move-result-object v50
4805     check-cast v50, Ljava/util/ArrayList;
4807     if-nez v50, :cond_31b
4809     new-instance v50, Ljava/util/ArrayList;
4811     invoke-direct/range {v50 .. v50}, Ljava/util/ArrayList;-><init>()V
4813     move-object/from16 v0, p0
4815     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
4817     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4819     move-result-object v5
4821     move-object/from16 v0, v50
4823     invoke-virtual {v3, v5, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
4825     :cond_31b
4826     invoke-virtual/range {v50 .. v50}, Ljava/util/ArrayList;->size()I
4828     move-result v32
4830     const/16 v42, 0x0
4832     :goto_321
4833     move/from16 v0, v42
4835     move/from16 v1, v32
4837     if-ge v0, v1, :cond_347
4839     move-object/from16 v0, v50
4841     move/from16 v1, v42
4843     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
4845     move-result-object v3
4847     check-cast v3, Landroid/content/Intent;
4849     move-object/from16 v0, v44
4851     invoke-virtual {v0, v3}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
4853     move-result v3
4855     if-eqz v3, :cond_47f
4857     new-instance v3, Landroid/content/Intent;
4859     move-object/from16 v0, v44
4861     invoke-direct {v3, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
4863     move-object/from16 v0, v50
4865     move/from16 v1, v42
4867     invoke-virtual {v0, v1, v3}, Ljava/util/ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
4869     :cond_347
4870     move/from16 v0, v42
4872     move/from16 v1, v32
4874     if-lt v0, v1, :cond_359
4876     new-instance v3, Landroid/content/Intent;
4878     move-object/from16 v0, v44
4880     invoke-direct {v3, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
4882     move-object/from16 v0, v50
4884     invoke-virtual {v0, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
4886     :cond_359
4887     const/16 v24, 0x0
4889     const/4 v15, 0x0
4891     :try_start_35c
4892     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
4894     move-result-object v3
4896     if-eqz v3, :cond_498
4898     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
4900     move-result-object v3
4902     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
4904     move-result-object v5
4906     const/16 v9, 0x400
4908     move/from16 v0, p14
4910     invoke-interface {v3, v5, v9, v0}, Landroid/content/pm/IPackageManager;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
4912     move-result-object v35
4914     if-eqz v35, :cond_3a4
4916     new-instance v54, Ljava/util/ArrayList;
4918     invoke-direct/range {v54 .. v54}, Ljava/util/ArrayList;-><init>()V
4919     :try_end_379
4920     .catch Landroid/os/RemoteException; {:try_start_35c .. :try_end_379} :catch_5a2
4922     :try_start_379
4923     new-instance v57, Landroid/content/pm/ResolveInfo;
4925     invoke-direct/range {v57 .. v57}, Landroid/content/pm/ResolveInfo;-><init>()V
4927     move-object/from16 v0, v35
4929     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->processName:Ljava/lang/String;
4931     move-object/from16 v0, v35
4933     iget-object v5, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
4935     move-object/from16 v0, p0
4937     invoke-virtual {v0, v3, v5}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
4939     move-result v3
4941     if-eqz v3, :cond_483
4943     const/4 v3, 0x0
4945     move-object/from16 v0, p0
4947     move-object/from16 v1, v35
4949     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->getActivityInfoForUser(Landroid/content/pm/ActivityInfo;I)Landroid/content/pm/ActivityInfo;
4951     move-result-object v3
4953     move-object/from16 v0, v57
4955     iput-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
4957     :goto_39b
4958     move-object/from16 v0, v54
4960     move-object/from16 v1, v57
4962     invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
4963     :try_end_3a2
4964     .catch Landroid/os/RemoteException; {:try_start_379 .. :try_end_3a2} :catch_493
4966     move-object/from16 v24, v54
4968     :cond_3a4
4969     :goto_3a4
4970     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getFlags()I
4972     move-result v3
4974     const/high16 v5, 0x2000
4976     and-int/2addr v3, v5
4978     if-eqz v3, :cond_4c2
4980     const/16 v55, 0x1
4982     :goto_3af
4983     if-eqz v15, :cond_4c6
4985     invoke-interface {v15}, Ljava/util/List;->size()I
4987     move-result v33
4989     :goto_3b5
4990     if-nez p10, :cond_3f5
4992     if-lez v33, :cond_3f5
4994     move-object/from16 v0, p0
4996     move-object/from16 v1, v44
4998     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
5000     move-result-object v8
5002     new-instance v7, Lcom/android/server/am/BroadcastRecord;
5004     const/16 v22, 0x0
5006     move-object/from16 v9, v44
5008     move-object/from16 v10, p1
5010     move-object/from16 v11, p2
5012     move/from16 v12, p12
5014     move/from16 v13, p13
5016     move-object/from16 v14, p9
5018     move-object/from16 v16, p5
5020     move/from16 v17, p6
5022     move-object/from16 v18, p7
5024     move-object/from16 v19, p8
5026     move/from16 v20, p10
5028     move/from16 v21, p11
5030     invoke-direct/range {v7 .. v22}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZ)V
5032     if-eqz v55, :cond_4ca
5034     invoke-virtual {v8, v7}, Lcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Z
5036     move-result v3
5038     if-eqz v3, :cond_4ca
5040     const/16 v56, 0x1
5042     :goto_3ea
5043     if-nez v56, :cond_3f2
5045     invoke-virtual {v8, v7}, Lcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
5047     invoke-virtual {v8}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
5049     :cond_3f2
5050     const/4 v15, 0x0
5052     const/16 v33, 0x0
5054     :cond_3f5
5055     const/16 v46, 0x0
5057     if-eqz v24, :cond_53a
5059     const/16 v59, 0x0
5061     const-string v3, "android.intent.action.PACKAGE_ADDED"
5063     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
5065     move-result-object v5
5067     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5069     move-result v3
5071     if-nez v3, :cond_41f
5073     const-string v3, "android.intent.action.PACKAGE_RESTARTED"
5075     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
5077     move-result-object v5
5079     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5081     move-result v3
5083     if-nez v3, :cond_41f
5085     const-string v3, "android.intent.action.PACKAGE_DATA_CLEARED"
5087     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
5089     move-result-object v5
5091     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5093     move-result v3
5095     if-eqz v3, :cond_4ce
5097     :cond_41f
5098     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getData()Landroid/net/Uri;
5100     move-result-object v40
5102     if-eqz v40, :cond_433
5104     invoke-virtual/range {v40 .. v40}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
5106     move-result-object v52
5108     if-eqz v52, :cond_433
5110     const/4 v3, 0x1
5112     new-array v0, v3, [Ljava/lang/String;
5114     move-object/from16 v59, v0
5116     const/4 v3, 0x0
5118     aput-object v52, v59, v3
5120     :cond_433
5121     :goto_433
5122     if-eqz v59, :cond_4e8
5124     move-object/from16 v0, v59
5126     array-length v3, v0
5128     if-lez v3, :cond_4e8
5130     move-object/from16 v36, v59
5132     move-object/from16 v0, v36
5134     array-length v0, v0
5136     move/from16 v48, v0
5138     const/16 v43, 0x0
5140     :goto_443
5141     move/from16 v0, v43
5143     move/from16 v1, v48
5145     if-ge v0, v1, :cond_4e8
5147     aget-object v58, v36, v43
5149     if-eqz v58, :cond_4e4
5151     invoke-interface/range {v24 .. v24}, Ljava/util/List;->size()I
5153     move-result v34
5155     const/16 v47, 0x0
5157     :goto_453
5158     move/from16 v0, v47
5160     move/from16 v1, v34
5162     if-ge v0, v1, :cond_4e4
5164     move-object/from16 v0, v24
5166     move/from16 v1, v47
5168     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
5170     move-result-object v39
5172     check-cast v39, Landroid/content/pm/ResolveInfo;
5174     move-object/from16 v0, v39
5176     iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
5178     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
5180     move-object/from16 v0, v58
5182     invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5184     move-result v3
5186     if-eqz v3, :cond_47c
5188     move-object/from16 v0, v24
5190     move/from16 v1, v47
5192     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
5194     add-int/lit8 v47, v47, -0x1
5196     add-int/lit8 v34, v34, -0x1
5198     :cond_47c
5199     add-int/lit8 v47, v47, 0x1
5201     goto :goto_453
5203     :cond_47f
5204     add-int/lit8 v42, v42, 0x1
5206     goto/16 :goto_321
5208     :cond_483
5209     :try_start_483
5210     move-object/from16 v0, p0
5212     move-object/from16 v1, v35
5214     move/from16 v2, p14
5216     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->getActivityInfoForUser(Landroid/content/pm/ActivityInfo;I)Landroid/content/pm/ActivityInfo;
5218     move-result-object v3
5220     move-object/from16 v0, v57
5222     iput-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
5223     :try_end_491
5224     .catch Landroid/os/RemoteException; {:try_start_483 .. :try_end_491} :catch_493
5226     goto/16 :goto_39b
5228     :catch_493
5229     move-exception v3
5231     move-object/from16 v24, v54
5233     goto/16 :goto_3a4
5235     :cond_498
5236     :try_start_498
5237     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getFlags()I
5239     move-result v3
5241     const/high16 v5, 0x4000
5243     and-int/2addr v3, v5
5245     if-nez v3, :cond_4b1
5247     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
5249     move-result-object v3
5251     const/16 v5, 0x400
5253     move-object/from16 v0, v44
5255     move-object/from16 v1, p4
5257     move/from16 v2, p14
5259     invoke-interface {v3, v0, v1, v5, v2}, Landroid/content/pm/IPackageManager;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
5261     move-result-object v24
5263     :cond_4b1
5264     move-object/from16 v0, p0
5266     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
5268     const/4 v5, 0x0
5270     move-object/from16 v0, v44
5272     move-object/from16 v1, p4
5274     move/from16 v2, p14
5276     invoke-virtual {v3, v0, v1, v5, v2}, Lcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
5277     :try_end_4bf
5278     .catch Landroid/os/RemoteException; {:try_start_498 .. :try_end_4bf} :catch_5a2
5280     move-result-object v15
5282     goto/16 :goto_3a4
5284     :cond_4c2
5285     const/16 v55, 0x0
5287     goto/16 :goto_3af
5289     :cond_4c6
5290     const/16 v33, 0x0
5292     goto/16 :goto_3b5
5294     :cond_4ca
5295     const/16 v56, 0x0
5297     goto/16 :goto_3ea
5299     :cond_4ce
5300     const-string v3, "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"
5302     invoke-virtual/range {v44 .. v44}, Landroid/content/Intent;->getAction()Ljava/lang/String;
5304     move-result-object v5
5306     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5308     move-result v3
5310     if-eqz v3, :cond_433
5312     const-string v3, "android.intent.extra.changed_package_list"
5314     move-object/from16 v0, v44
5316     invoke-virtual {v0, v3}, Landroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;
5318     move-result-object v59
5320     goto/16 :goto_433
5322     :cond_4e4
5323     add-int/lit8 v43, v43, 0x1
5325     goto/16 :goto_443
5327     :cond_4e8
5328     if-eqz v24, :cond_532
5330     invoke-interface/range {v24 .. v24}, Ljava/util/List;->size()I
5332     move-result v34
5334     :goto_4ee
5335     const/16 v47, 0x0
5337     const/16 v39, 0x0
5339     const/16 v38, 0x0
5341     :goto_4f4
5342     move/from16 v0, v47
5344     move/from16 v1, v34
5346     if-ge v0, v1, :cond_53a
5348     move/from16 v0, v46
5350     move/from16 v1, v33
5352     if-ge v0, v1, :cond_53a
5354     if-nez v39, :cond_50c
5356     move-object/from16 v0, v24
5358     move/from16 v1, v47
5360     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
5362     move-result-object v39
5364     check-cast v39, Landroid/content/pm/ResolveInfo;
5366     :cond_50c
5367     if-nez v38, :cond_516
5369     move/from16 v0, v46
5371     invoke-interface {v15, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
5373     move-result-object v38
5375     check-cast v38, Lcom/android/server/am/BroadcastFilter;
5377     :cond_516
5378     invoke-virtual/range {v38 .. v38}, Lcom/android/server/am/BroadcastFilter;->getPriority()I
5380     move-result v3
5382     move-object/from16 v0, v39
5384     iget v5, v0, Landroid/content/pm/ResolveInfo;->priority:I
5386     if-lt v3, v5, :cond_535
5388     move-object/from16 v0, v24
5390     move/from16 v1, v47
5392     move-object/from16 v2, v38
5394     invoke-interface {v0, v1, v2}, Ljava/util/List;->add(ILjava/lang/Object;)V
5396     add-int/lit8 v46, v46, 0x1
5398     const/16 v38, 0x0
5400     add-int/lit8 v47, v47, 0x1
5402     add-int/lit8 v34, v34, 0x1
5404     goto :goto_4f4
5406     :cond_532
5407     const/16 v34, 0x0
5409     goto :goto_4ee
5411     :cond_535
5412     add-int/lit8 v47, v47, 0x1
5414     const/16 v39, 0x0
5416     goto :goto_4f4
5418     :cond_53a
5419     :goto_53a
5420     move/from16 v0, v46
5422     move/from16 v1, v33
5424     if-ge v0, v1, :cond_555
5426     if-nez v24, :cond_547
5428     new-instance v24, Ljava/util/ArrayList;
5430     invoke-direct/range {v24 .. v24}, Ljava/util/ArrayList;-><init>()V
5432     :cond_547
5433     move/from16 v0, v46
5435     invoke-interface {v15, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
5437     move-result-object v3
5439     move-object/from16 v0, v24
5441     invoke-interface {v0, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
5443     add-int/lit8 v46, v46, 0x1
5445     goto :goto_53a
5447     :cond_555
5448     if-eqz v24, :cond_55d
5450     invoke-interface/range {v24 .. v24}, Ljava/util/List;->size()I
5452     move-result v3
5454     if-gtz v3, :cond_55f
5456     :cond_55d
5457     if-eqz p5, :cond_59c
5459     :cond_55f
5460     move-object/from16 v0, p0
5462     move-object/from16 v1, v44
5464     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
5466     move-result-object v8
5468     new-instance v7, Lcom/android/server/am/BroadcastRecord;
5470     const/16 v31, 0x0
5472     move-object/from16 v16, v7
5474     move-object/from16 v17, v8
5476     move-object/from16 v18, v44
5478     move-object/from16 v19, p1
5480     move-object/from16 v20, p2
5482     move/from16 v21, p12
5484     move/from16 v22, p13
5486     move-object/from16 v23, p9
5488     move-object/from16 v25, p5
5490     move/from16 v26, p6
5492     move-object/from16 v27, p7
5494     move-object/from16 v28, p8
5496     move/from16 v29, p10
5498     move/from16 v30, p11
5500     invoke-direct/range {v16 .. v31}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZ)V
5502     if-eqz v55, :cond_59f
5504     invoke-virtual {v8, v7}, Lcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Z
5506     move-result v3
5508     if-eqz v3, :cond_59f
5510     const/16 v56, 0x1
5512     :goto_594
5513     if-nez v56, :cond_59c
5515     invoke-virtual {v8, v7}, Lcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
5517     invoke-virtual {v8}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
5519     :cond_59c
5520     const/4 v3, 0x0
5522     goto/16 :goto_2c0
5524     :cond_59f
5525     const/16 v56, 0x0
5527     goto :goto_594
5529     :catch_5a2
5530     move-exception v3
5532     goto/16 :goto_3a4
5533 .end method
5535 .method private static buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
5536     .registers 6
5538     if-ne p2, p3, :cond_19
5540     if-nez p1, :cond_5
5542     :goto_4
5543     return-object p0
5545     :cond_5
5546     new-instance v0, Ljava/lang/StringBuilder;
5548     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5550     invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5552     move-result-object v0
5554     const-string v1, "  "
5556     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5558     move-result-object v0
5560     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5562     move-result-object p0
5564     goto :goto_4
5566     :cond_19
5567     new-instance v0, Ljava/lang/StringBuilder;
5569     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5571     invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5573     move-result-object v0
5575     const-string v1, "+"
5577     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5579     move-result-object v0
5581     sub-int v1, p2, p3
5583     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
5585     move-result-object v1
5587     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5589     move-result-object v0
5591     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5593     move-result-object p0
5595     goto :goto_4
5596 .end method
5598 .method private final bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
5599     .registers 9
5601     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
5603     move-result-wide v1
5605     iget v3, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
5607     if-nez v3, :cond_31
5609     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
5611     if-eqz v3, :cond_31
5613     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
5615     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
5617     invoke-virtual {v3}, Ljava/util/HashSet;->size()I
5619     move-result v3
5621     if-nez v3, :cond_2a
5623     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
5625     const/16 v4, 0xc
5627     invoke-virtual {v3, v4}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
5629     move-result-object v0
5631     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
5633     iput-object v3, v0, Landroid/os/Message;->obj:Ljava/lang/Object;
5635     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
5637     const-wide/16 v4, 0x4e20
5639     add-long/2addr v4, v1
5641     invoke-virtual {v3, v0, v4, v5}, Landroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z
5643     :cond_2a
5644     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
5646     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
5648     invoke-virtual {v3, p1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
5650     :cond_31
5651     iget v3, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
5653     add-int/lit8 v3, v3, 0x1
5655     iput v3, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
5657     iput-wide v1, p1, Lcom/android/server/am/ServiceRecord;->executingStart:J
5659     return-void
5660 .end method
5662 .method private final canGcNowLocked()Z
5663     .registers 7
5665     const/4 v3, 0x0
5667     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
5669     array-length v2, v0
5671     const/4 v1, 0x0
5673     :goto_5
5674     if-ge v1, v2, :cond_1d
5676     aget-object v4, v0, v1
5678     iget-object v5, v4, Lcom/android/server/am/BroadcastQueue;->mParallelBroadcasts:Ljava/util/ArrayList;
5680     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
5682     move-result v5
5684     if-nez v5, :cond_19
5686     iget-object v5, v4, Lcom/android/server/am/BroadcastQueue;->mOrderedBroadcasts:Ljava/util/ArrayList;
5688     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
5690     move-result v5
5692     if-eqz v5, :cond_1a
5694     :cond_19
5695     const/4 v3, 0x1
5697     :cond_1a
5698     add-int/lit8 v1, v1, 0x1
5700     goto :goto_5
5702     :cond_1d
5703     if-nez v3, :cond_33
5705     iget-boolean v5, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
5707     if-nez v5, :cond_31
5709     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
5711     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
5713     if-eqz v5, :cond_33
5715     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
5717     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
5719     iget-boolean v5, v5, Lcom/android/server/am/ActivityRecord;->idle:Z
5721     if-eqz v5, :cond_33
5723     :cond_31
5724     const/4 v5, 0x1
5726     :goto_32
5727     return v5
5729     :cond_33
5730     const/4 v5, 0x0
5732     goto :goto_32
5733 .end method
5735 .method private final checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
5736     .registers 16
5738     const/4 v8, 0x0
5740     if-eqz p2, :cond_19
5742     iget v2, p2, Lcom/android/server/am/ProcessRecord;->pid:I
5744     :goto_5
5745     if-eqz p2, :cond_1e
5747     iget v3, p2, Lcom/android/server/am/ProcessRecord;->uid:I
5749     :goto_9
5750     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
5752     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5754     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
5756     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5758     move-object v0, p0
5760     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
5762     move-result v0
5764     if-nez v0, :cond_23
5766     :cond_18
5767     :goto_18
5768     return-object v8
5770     :cond_19
5771     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
5773     move-result v2
5775     goto :goto_5
5777     :cond_1e
5778     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
5780     move-result v3
5782     goto :goto_9
5784     :cond_23
5785     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
5787     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5789     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
5791     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5793     move-object v0, p0
5795     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
5797     move-result v0
5799     if-eqz v0, :cond_18
5801     iget-object v11, p1, Landroid/content/pm/ProviderInfo;->pathPermissions:[Landroid/content/pm/PathPermission;
5803     if-eqz v11, :cond_60
5805     array-length v6, v11
5807     :cond_37
5808     if-lez v6, :cond_60
5810     add-int/lit8 v6, v6, -0x1
5812     aget-object v10, v11, v6
5814     invoke-virtual {v10}, Landroid/content/pm/PathPermission;->getReadPermission()Ljava/lang/String;
5816     move-result-object v1
5818     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5820     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
5822     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5824     move-object v0, p0
5826     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
5828     move-result v0
5830     if-eqz v0, :cond_18
5832     invoke-virtual {v10}, Landroid/content/pm/PathPermission;->getWritePermission()Ljava/lang/String;
5834     move-result-object v1
5836     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5838     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
5840     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5842     move-object v0, p0
5844     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
5846     move-result v0
5848     if-nez v0, :cond_37
5850     goto :goto_18
5852     :cond_60
5853     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
5855     invoke-virtual {v0, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
5857     move-result-object v9
5859     check-cast v9, Ljava/util/HashMap;
5861     if-eqz v9, :cond_91
5863     invoke-virtual {v9}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
5865     move-result-object v0
5867     invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
5869     move-result-object v7
5871     :cond_72
5872     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
5874     move-result v0
5876     if-eqz v0, :cond_91
5878     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
5880     move-result-object v12
5882     check-cast v12, Ljava/util/Map$Entry;
5884     invoke-interface {v12}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
5886     move-result-object v0
5888     check-cast v0, Landroid/net/Uri;
5890     invoke-virtual {v0}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
5892     move-result-object v0
5894     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
5896     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5898     move-result v0
5900     if-eqz v0, :cond_72
5902     goto :goto_18
5904     :cond_91
5905     iget-boolean v0, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5907     if-nez v0, :cond_e2
5909     new-instance v0, Ljava/lang/StringBuilder;
5911     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5913     const-string v1, "Permission Denial: opening provider "
5915     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5917     move-result-object v0
5919     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
5921     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5923     move-result-object v0
5925     const-string v1, " from "
5927     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5929     move-result-object v0
5931     if-eqz p2, :cond_df
5933     :goto_ae
5934     invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
5936     move-result-object v0
5938     const-string v1, " (pid="
5940     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5942     move-result-object v0
5944     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5946     move-result-object v0
5948     const-string v1, ", uid="
5950     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5952     move-result-object v0
5954     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5956     move-result-object v0
5958     const-string v1, ") that is not exported from uid "
5960     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5962     move-result-object v0
5964     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5966     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
5968     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5970     move-result-object v0
5972     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5974     move-result-object v8
5976     :goto_d8
5977     const-string v0, "ActivityManager"
5979     invoke-static {v0, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
5981     goto/16 :goto_18
5983     :cond_df
5984     const-string p2, "(null)"
5986     goto :goto_ae
5988     :cond_e2
5989     new-instance v0, Ljava/lang/StringBuilder;
5991     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5993     const-string v1, "Permission Denial: opening provider "
5995     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5997     move-result-object v0
5999     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
6001     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6003     move-result-object v0
6005     const-string v1, " from "
6007     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6009     move-result-object v0
6011     if-eqz p2, :cond_130
6013     :goto_fb
6014     invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
6016     move-result-object v0
6018     const-string v1, " (pid="
6020     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6022     move-result-object v0
6024     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6026     move-result-object v0
6028     const-string v1, ", uid="
6030     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6032     move-result-object v0
6034     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6036     move-result-object v0
6038     const-string v1, ") requires "
6040     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6042     move-result-object v0
6044     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
6046     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6048     move-result-object v0
6050     const-string v1, " or "
6052     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6054     move-result-object v0
6056     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
6058     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6060     move-result-object v0
6062     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6064     move-result-object v8
6066     goto :goto_d8
6068     :cond_130
6069     const-string p2, "(null)"
6071     goto :goto_fb
6072 .end method
6074 .method private final checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
6075     .registers 19
6077     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
6079     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
6081     move/from16 v0, p4
6083     if-ne v12, v0, :cond_a
6085     const/4 v12, 0x1
6087     :goto_9
6088     return v12
6090     :cond_a
6091     iget-boolean v12, p2, Landroid/content/pm/ProviderInfo;->exported:Z
6093     if-nez v12, :cond_10
6095     const/4 v12, 0x0
6097     goto :goto_9
6099     :cond_10
6100     and-int/lit8 v12, p5, 0x1
6102     if-nez v12, :cond_82
6104     const/4 v10, 0x1
6106     :goto_15
6107     and-int/lit8 v12, p5, 0x2
6109     if-nez v12, :cond_84
6111     const/4 v11, 0x1
6113     :goto_1a
6114     if-nez v10, :cond_2b
6116     :try_start_1c
6117     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
6119     if-eqz v12, :cond_2b
6121     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
6123     move/from16 v0, p4
6125     invoke-interface {p1, v12, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
6127     move-result v12
6129     if-nez v12, :cond_2b
6131     const/4 v10, 0x1
6133     :cond_2b
6134     if-nez v11, :cond_3c
6136     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
6138     if-eqz v12, :cond_3c
6140     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
6142     move/from16 v0, p4
6144     invoke-interface {p1, v12, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
6146     move-result v12
6148     if-nez v12, :cond_3c
6150     const/4 v11, 0x1
6152     :cond_3c
6153     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
6155     if-nez v12, :cond_86
6157     const/4 v1, 0x1
6159     :goto_41
6160     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
6162     if-nez v12, :cond_88
6164     const/4 v2, 0x1
6166     :goto_46
6167     iget-object v8, p2, Landroid/content/pm/ProviderInfo;->pathPermissions:[Landroid/content/pm/PathPermission;
6169     if-eqz v8, :cond_8e
6171     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getPath()Ljava/lang/String;
6173     move-result-object v5
6175     array-length v4, v8
6177     :cond_4f
6178     :goto_4f
6179     if-lez v4, :cond_8e
6181     if-eqz v10, :cond_55
6183     if-nez v11, :cond_8e
6185     :cond_55
6186     add-int/lit8 v4, v4, -0x1
6188     aget-object v6, v8, v4
6190     invoke-virtual {v6, v5}, Landroid/content/pm/PathPermission;->match(Ljava/lang/String;)Z
6192     move-result v12
6194     if-eqz v12, :cond_4f
6196     if-nez v10, :cond_70
6198     invoke-virtual {v6}, Landroid/content/pm/PathPermission;->getReadPermission()Ljava/lang/String;
6200     move-result-object v7
6202     if-eqz v7, :cond_70
6204     move/from16 v0, p4
6206     invoke-interface {p1, v7, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
6208     move-result v12
6210     if-nez v12, :cond_8a
6212     const/4 v10, 0x1
6214     :cond_70
6215     :goto_70
6216     if-nez v11, :cond_4f
6218     invoke-virtual {v6}, Landroid/content/pm/PathPermission;->getWritePermission()Ljava/lang/String;
6220     move-result-object v9
6222     if-eqz v9, :cond_4f
6224     move/from16 v0, p4
6226     invoke-interface {p1, v9, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
6227     :try_end_7d
6228     .catch Landroid/os/RemoteException; {:try_start_1c .. :try_end_7d} :catch_9b
6230     move-result v12
6232     if-nez v12, :cond_8c
6234     const/4 v11, 0x1
6236     goto :goto_4f
6238     :cond_82
6239     const/4 v10, 0x0
6241     goto :goto_15
6243     :cond_84
6244     const/4 v11, 0x0
6246     goto :goto_1a
6248     :cond_86
6249     const/4 v1, 0x0
6251     goto :goto_41
6253     :cond_88
6254     const/4 v2, 0x0
6256     goto :goto_46
6258     :cond_8a
6259     const/4 v1, 0x0
6261     goto :goto_70
6263     :cond_8c
6264     const/4 v2, 0x0
6266     goto :goto_4f
6268     :cond_8e
6269     if-eqz v1, :cond_91
6271     const/4 v10, 0x1
6273     :cond_91
6274     if-eqz v2, :cond_94
6276     const/4 v11, 0x1
6278     :cond_94
6279     if-eqz v10, :cond_9f
6281     if-eqz v11, :cond_9f
6283     const/4 v12, 0x1
6285     goto/16 :goto_9
6287     :catch_9b
6288     move-exception v3
6290     const/4 v12, 0x0
6292     goto/16 :goto_9
6294     :cond_9f
6295     const/4 v12, 0x0
6297     goto/16 :goto_9
6298 .end method
6300 .method private final checkUriPermissionLocked(Landroid/net/Uri;II)Z
6301     .registers 9
6303     const/4 v2, 0x1
6305     const/4 v3, 0x0
6307     if-nez p2, :cond_5
6309     :cond_4
6310     :goto_4
6311     return v2
6313     :cond_5
6314     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
6316     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
6318     move-result-object v1
6320     check-cast v1, Ljava/util/HashMap;
6322     if-nez v1, :cond_11
6324     move v2, v3
6326     goto :goto_4
6328     :cond_11
6329     invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
6331     move-result-object v0
6333     check-cast v0, Lcom/android/server/am/UriPermission;
6335     if-nez v0, :cond_1b
6337     move v2, v3
6339     goto :goto_4
6341     :cond_1b
6342     iget v4, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
6344     and-int/2addr v4, p3
6346     if-eq v4, p3, :cond_4
6348     move v2, v3
6350     goto :goto_4
6351 .end method
6353 .method private checkValidCaller(II)V
6354     .registers 6
6356     invoke-static {p1}, Landroid/os/UserId;->getUserId(I)I
6358     move-result v0
6360     if-eq v0, p2, :cond_c
6362     const/16 v0, 0x3e8
6364     if-eq p1, v0, :cond_c
6366     if-nez p1, :cond_d
6368     :cond_c
6369     return-void
6371     :cond_d
6372     new-instance v0, Ljava/lang/SecurityException;
6374     new-instance v1, Ljava/lang/StringBuilder;
6376     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
6378     const-string v2, "Caller uid="
6380     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6382     move-result-object v1
6384     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6386     move-result-object v1
6388     const-string v2, " is not privileged to communicate with user="
6390     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6392     move-result-object v1
6394     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
6396     move-result-object v1
6398     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6400     move-result-object v1
6402     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
6404     throw v0
6405 .end method
6407 .method private final cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
6408     .registers 22
6410     if-ltz p4, :cond_b
6412     move-object/from16 v0, p0
6414     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
6416     move/from16 v0, p4
6418     invoke-virtual {v12, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
6420     :cond_b
6421     move-object/from16 v0, p0
6423     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
6425     move-object/from16 v0, p1
6427     invoke-virtual {v12, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
6429     move-object/from16 v0, p1
6431     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
6433     if-eqz v12, :cond_26
6435     move-object/from16 v0, p1
6437     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
6439     invoke-virtual {v12}, Landroid/app/Dialog;->dismiss()V
6441     const/4 v12, 0x0
6443     move-object/from16 v0, p1
6445     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
6447     :cond_26
6448     move-object/from16 v0, p1
6450     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
6452     if-eqz v12, :cond_38
6454     move-object/from16 v0, p1
6456     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
6458     invoke-virtual {v12}, Landroid/app/Dialog;->dismiss()V
6460     const/4 v12, 0x0
6462     move-object/from16 v0, p1
6464     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
6466     :cond_38
6467     move-object/from16 v0, p1
6469     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
6471     if-eqz v12, :cond_4a
6473     move-object/from16 v0, p1
6475     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
6477     invoke-virtual {v12}, Landroid/app/Dialog;->dismiss()V
6479     const/4 v12, 0x0
6481     move-object/from16 v0, p1
6483     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
6485     :cond_4a
6486     const/4 v12, 0x0
6488     move-object/from16 v0, p1
6490     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
6492     const/4 v12, 0x0
6494     move-object/from16 v0, p1
6496     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
6498     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
6500     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
6502     const/4 v12, 0x0
6504     move-object/from16 v0, p1
6506     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
6508     const/4 v12, 0x0
6510     move-object/from16 v0, p1
6512     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
6514     const/4 v12, 0x0
6516     move-object/from16 v0, p1
6518     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
6520     const/4 v12, 0x0
6522     move-object/from16 v0, p1
6524     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
6526     const/4 v12, 0x0
6528     move-object/from16 v0, p1
6530     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
6532     const/4 v12, 0x0
6534     move-object/from16 v0, p1
6536     iput-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
6538     move-object/from16 v0, p0
6540     move-object/from16 v1, p1
6542     move/from16 v2, p3
6544     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
6546     const/4 v11, 0x0
6548     move-object/from16 v0, p1
6550     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
6552     invoke-virtual {v12}, Ljava/util/HashMap;->isEmpty()Z
6554     move-result v12
6556     if-nez v12, :cond_ca
6558     move-object/from16 v0, p1
6560     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
6562     invoke-virtual {v12}, Ljava/util/HashMap;->values()Ljava/util/Collection;
6564     move-result-object v12
6566     invoke-interface {v12}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
6568     move-result-object v8
6570     :goto_98
6571     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
6573     move-result v12
6575     if-eqz v12, :cond_c3
6577     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
6579     move-result-object v6
6581     check-cast v6, Lcom/android/server/am/ContentProviderRecord;
6583     move-object/from16 v0, p1
6585     iget-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
6587     if-nez v12, :cond_ac
6589     if-nez p3, :cond_c1
6591     :cond_ac
6592     const/4 v3, 0x1
6594     :goto_ad
6595     move-object/from16 v0, p0
6597     move-object/from16 v1, p1
6599     invoke-direct {v0, v1, v6, v3}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
6601     move-result v12
6603     if-nez v12, :cond_b9
6605     if-eqz v3, :cond_ba
6607     :cond_b9
6608     const/4 v11, 0x1
6610     :cond_ba
6611     const/4 v12, 0x0
6613     iput-object v12, v6, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
6615     const/4 v12, 0x0
6617     iput-object v12, v6, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
6619     goto :goto_98
6621     :cond_c1
6622     const/4 v3, 0x0
6624     goto :goto_ad
6626     :cond_c3
6627     move-object/from16 v0, p1
6629     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
6631     invoke-virtual {v12}, Ljava/util/HashMap;->clear()V
6633     :cond_ca
6634     const/4 v12, 0x0
6636     move-object/from16 v0, p0
6638     move-object/from16 v1, p1
6640     invoke-virtual {v0, v1, v12}, Lcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
6642     move-result v12
6644     if-eqz v12, :cond_d6
6646     const/4 v11, 0x1
6648     :cond_d6
6649     move-object/from16 v0, p1
6651     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
6653     invoke-virtual {v12}, Ljava/util/ArrayList;->isEmpty()Z
6655     move-result v12
6657     if-nez v12, :cond_106
6659     const/4 v7, 0x0
6661     :goto_e1
6662     move-object/from16 v0, p1
6664     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
6666     invoke-virtual {v12}, Ljava/util/ArrayList;->size()I
6668     move-result v12
6670     if-ge v7, v12, :cond_ff
6672     move-object/from16 v0, p1
6674     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
6676     invoke-virtual {v12, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
6678     move-result-object v5
6680     check-cast v5, Lcom/android/server/am/ContentProviderConnection;
6682     iget-object v12, v5, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
6684     iget-object v12, v12, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
6686     invoke-virtual {v12, v5}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
6688     add-int/lit8 v7, v7, 0x1
6690     goto :goto_e1
6692     :cond_ff
6693     move-object/from16 v0, p1
6695     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
6697     invoke-virtual {v12}, Ljava/util/ArrayList;->clear()V
6699     :cond_106
6700     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
6702     move-object/from16 v0, p1
6704     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
6706     invoke-virtual {v12}, Ljava/util/HashSet;->size()I
6708     move-result v12
6710     if-lez v12, :cond_134
6712     move-object/from16 v0, p1
6714     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
6716     invoke-virtual {v12}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
6718     move-result-object v9
6720     :goto_11b
6721     invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
6723     move-result v12
6725     if-eqz v12, :cond_12d
6727     invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
6729     move-result-object v12
6731     check-cast v12, Lcom/android/server/am/ReceiverList;
6733     move-object/from16 v0, p0
6735     invoke-virtual {v0, v12}, Lcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
6737     goto :goto_11b
6739     :cond_12d
6740     move-object/from16 v0, p1
6742     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
6744     invoke-virtual {v12}, Ljava/util/HashSet;->clear()V
6746     :cond_134
6747     move-object/from16 v0, p0
6749     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
6751     if-eqz v12, :cond_15b
6753     move-object/from16 v0, p1
6755     iget v12, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6757     move-object/from16 v0, p0
6759     iget-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
6761     iget-object v13, v13, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
6763     iget v13, v13, Lcom/android/server/am/ProcessRecord;->pid:I
6765     if-ne v12, v13, :cond_15b
6767     :try_start_148
6768     const-string v12, "backup"
6770     invoke-static {v12}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
6772     move-result-object v12
6774     invoke-static {v12}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
6776     move-result-object v4
6778     move-object/from16 v0, p1
6780     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
6782     iget-object v12, v12, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
6784     invoke-interface {v4, v12}, Landroid/app/backup/IBackupManager;->agentDisconnected(Ljava/lang/String;)V
6785     :try_end_15b
6786     .catch Landroid/os/RemoteException; {:try_start_148 .. :try_end_15b} :catch_27f
6788     :cond_15b
6789     :goto_15b
6790     move-object/from16 v0, p0
6792     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
6794     invoke-virtual {v12}, Ljava/util/ArrayList;->size()I
6796     move-result v12
6798     add-int/lit8 v7, v12, -0x1
6800     :goto_165
6801     if-ltz v7, :cond_18a
6803     move-object/from16 v0, p0
6805     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
6807     invoke-virtual {v12, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
6809     move-result-object v10
6811     check-cast v10, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
6813     iget v12, v10, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
6815     move-object/from16 v0, p1
6817     iget v13, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6819     if-ne v12, v13, :cond_187
6821     move-object/from16 v0, p0
6823     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
6825     invoke-virtual {v12, v7}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
6827     move-object/from16 v0, p0
6829     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
6831     invoke-virtual {v12, v10}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
6833     :cond_187
6834     add-int/lit8 v7, v7, -0x1
6836     goto :goto_165
6838     :cond_18a
6839     move-object/from16 v0, p0
6841     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
6843     const/16 v13, 0x20
6845     move-object/from16 v0, p1
6847     iget v14, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6849     move-object/from16 v0, p1
6851     iget-object v15, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
6853     iget v15, v15, Landroid/content/pm/ApplicationInfo;->uid:I
6855     const/16 v16, 0x0
6857     invoke-virtual/range {v12 .. v16}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
6859     move-result-object v12
6861     invoke-virtual {v12}, Landroid/os/Message;->sendToTarget()V
6863     if-eqz p2, :cond_1a6
6865     :cond_1a5
6866     :goto_1a5
6867     return-void
6869     :cond_1a6
6870     move-object/from16 v0, p1
6872     iget-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
6874     if-eqz v12, :cond_1b2
6876     move-object/from16 v0, p1
6878     iget-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
6880     if-eqz v12, :cond_22d
6882     :cond_1b2
6883     move-object/from16 v0, p0
6885     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
6887     move-object/from16 v0, p1
6889     iget-object v13, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6891     move-object/from16 v0, p1
6893     iget v14, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6895     invoke-virtual {v12, v13, v14}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
6897     move-object/from16 v0, p0
6899     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
6901     move-object/from16 v0, p1
6903     iget v13, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6905     invoke-virtual {v12, v13}, Landroid/util/SparseArray;->remove(I)V
6907     move-object/from16 v0, p0
6909     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
6911     move-object/from16 v0, p1
6913     if-ne v12, v0, :cond_1e2
6915     const/4 v12, 0x0
6917     move-object/from16 v0, p0
6919     iput-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
6921     move-object/from16 v0, p0
6923     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
6925     const/16 v13, 0x19
6927     invoke-virtual {v12, v13}, Landroid/os/Handler;->sendEmptyMessage(I)Z
6929     :cond_1e2
6930     :goto_1e2
6931     move-object/from16 v0, p0
6933     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
6935     move-object/from16 v0, p1
6937     invoke-virtual {v12, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
6939     move-object/from16 v0, p0
6941     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
6943     move-object/from16 v0, p1
6945     if-ne v0, v12, :cond_1f8
6947     const/4 v12, 0x0
6949     move-object/from16 v0, p0
6951     iput-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
6953     :cond_1f8
6954     move-object/from16 v0, p0
6956     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
6958     move-object/from16 v0, p1
6960     if-ne v0, v12, :cond_205
6962     const/4 v12, 0x0
6964     move-object/from16 v0, p0
6966     iput-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
6968     :cond_205
6969     if-eqz v11, :cond_24a
6971     move-object/from16 v0, p1
6973     iget-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
6975     if-nez v12, :cond_24a
6977     move-object/from16 v0, p0
6979     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
6981     move-object/from16 v0, p1
6983     iget-object v13, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6985     move-object/from16 v0, p1
6987     iget v14, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6989     move-object/from16 v0, p1
6991     invoke-virtual {v12, v13, v14, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
6993     const-string v12, "restart"
6995     move-object/from16 v0, p1
6997     iget-object v13, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6999     move-object/from16 v0, p0
7001     move-object/from16 v1, p1
7003     invoke-direct {v0, v1, v12, v13}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
7005     goto/16 :goto_1a5
7007     :cond_22d
7008     move-object/from16 v0, p1
7010     iget-boolean v12, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
7012     if-nez v12, :cond_1e2
7014     move-object/from16 v0, p0
7016     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
7018     move-object/from16 v0, p1
7020     invoke-virtual {v12, v0}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
7022     move-result v12
7024     if-gez v12, :cond_1e2
7026     move-object/from16 v0, p0
7028     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
7030     move-object/from16 v0, p1
7032     invoke-virtual {v12, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
7034     const/4 v11, 0x1
7036     goto :goto_1e2
7038     :cond_24a
7039     move-object/from16 v0, p1
7041     iget v12, v0, Lcom/android/server/am/ProcessRecord;->pid:I
7043     if-lez v12, :cond_1a5
7045     move-object/from16 v0, p1
7047     iget v12, v0, Lcom/android/server/am/ProcessRecord;->pid:I
7049     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
7051     if-eq v12, v13, :cond_1a5
7053     move-object/from16 v0, p0
7055     iget-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
7057     monitor-enter v13
7059     :try_start_25d
7060     move-object/from16 v0, p0
7062     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
7064     move-object/from16 v0, p1
7066     iget v14, v0, Lcom/android/server/am/ProcessRecord;->pid:I
7068     invoke-virtual {v12, v14}, Landroid/util/SparseArray;->remove(I)V
7070     move-object/from16 v0, p0
7072     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
7074     const/16 v14, 0x14
7076     move-object/from16 v0, p1
7078     invoke-virtual {v12, v14, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
7080     monitor-exit v13
7081     :try_end_274
7082     .catchall {:try_start_25d .. :try_end_274} :catchall_27c
7084     const/4 v12, 0x0
7086     move-object/from16 v0, p1
7088     invoke-virtual {v0, v12}, Lcom/android/server/am/ProcessRecord;->setPid(I)V
7090     goto/16 :goto_1a5
7092     :catchall_27c
7093     move-exception v12
7095     :try_start_27d
7096     monitor-exit v13
7097     :try_end_27e
7098     .catchall {:try_start_27d .. :try_end_27e} :catchall_27c
7100     throw v12
7102     :catch_27f
7103     move-exception v12
7105     goto/16 :goto_15b
7106 .end method
7108 .method private cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
7109     .registers 22
7111     and-int/lit8 v1, p2, 0x1
7113     if-eqz v1, :cond_35
7115     const/4 v10, 0x1
7117     :goto_5
7118     new-instance v5, Landroid/content/Intent;
7120     move-object/from16 v0, p1
7122     iget-object v1, v0, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
7124     if-eqz v1, :cond_37
7126     move-object/from16 v0, p1
7128     iget-object v1, v0, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
7130     :goto_11
7131     invoke-direct {v5, v1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
7133     invoke-virtual {v5}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
7135     move-result-object v7
7137     if-nez v7, :cond_3c
7139     const-string v1, "ActivityManager"
7141     new-instance v3, Ljava/lang/StringBuilder;
7143     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
7145     const-string v4, "Now component for base intent of task: "
7147     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7149     move-result-object v3
7151     move-object/from16 v0, p1
7153     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
7155     move-result-object v3
7157     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
7159     move-result-object v3
7161     invoke-static {v1, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
7163     :cond_34
7164     return-void
7166     :cond_35
7167     const/4 v10, 0x0
7169     goto :goto_5
7171     :cond_37
7172     move-object/from16 v0, p1
7174     iget-object v1, v0, Lcom/android/server/am/TaskRecord;->affinityIntent:Landroid/content/Intent;
7176     goto :goto_11
7178     :cond_3c
7179     new-instance v16, Ljava/util/ArrayList;
7181     invoke-direct/range {v16 .. v16}, Ljava/util/ArrayList;-><init>()V
7183     move-object/from16 v0, p0
7185     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
7187     move-object/from16 v0, p1
7189     iget v3, v0, Lcom/android/server/am/TaskRecord;->userId:I
7191     invoke-virtual {v1, v3}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
7193     move-result-object v1
7195     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
7197     move-result-object v9
7199     :cond_51
7200     :goto_51
7201     invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
7203     move-result v1
7205     if-eqz v1, :cond_6f
7207     invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
7209     move-result-object v2
7211     check-cast v2, Lcom/android/server/am/ServiceRecord;
7213     iget-object v1, v2, Lcom/android/server/am/ServiceRecord;->packageName:Ljava/lang/String;
7215     invoke-virtual {v7}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
7217     move-result-object v3
7219     invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
7221     move-result v1
7223     if-eqz v1, :cond_51
7225     move-object/from16 v0, v16
7227     invoke-virtual {v0, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
7229     goto :goto_51
7231     :cond_6f
7232     const/4 v8, 0x0
7234     :goto_70
7235     invoke-virtual/range {v16 .. v16}, Ljava/util/ArrayList;->size()I
7237     move-result v1
7239     if-ge v8, v1, :cond_d7
7241     move-object/from16 v0, v16
7243     invoke-virtual {v0, v8}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7245     move-result-object v2
7247     check-cast v2, Lcom/android/server/am/ServiceRecord;
7249     iget-boolean v1, v2, Lcom/android/server/am/ServiceRecord;->startRequested:Z
7251     if-eqz v1, :cond_af
7253     iget-object v1, v2, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
7255     iget v1, v1, Landroid/content/pm/ServiceInfo;->flags:I
7257     and-int/lit8 v1, v1, 0x1
7259     if-eqz v1, :cond_b2
7261     const-string v1, "ActivityManager"
7263     new-instance v3, Ljava/lang/StringBuilder;
7265     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
7267     const-string v4, "Stopping service "
7269     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7271     move-result-object v3
7273     iget-object v4, v2, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
7275     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7277     move-result-object v3
7279     const-string v4, ": remove task"
7281     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7283     move-result-object v3
7285     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
7287     move-result-object v3
7289     invoke-static {v1, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
7291     move-object/from16 v0, p0
7293     invoke-direct {v0, v2}, Lcom/android/server/am/ActivityManagerService;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
7295     :cond_af
7296     :goto_af
7297     add-int/lit8 v8, v8, 0x1
7299     goto :goto_70
7301     :cond_b2
7302     iget-object v0, v2, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
7304     move-object/from16 v18, v0
7306     new-instance v1, Lcom/android/server/am/ServiceRecord$StartItem;
7308     const/4 v3, 0x1
7310     invoke-virtual {v2}, Lcom/android/server/am/ServiceRecord;->makeNextStartId()I
7312     move-result v4
7314     const/4 v6, 0x0
7316     invoke-direct/range {v1 .. v6}, Lcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;)V
7318     move-object/from16 v0, v18
7320     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
7322     iget-object v1, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
7324     if-eqz v1, :cond_af
7326     iget-object v1, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
7328     iget-object v1, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
7330     if-eqz v1, :cond_af
7332     const/4 v1, 0x0
7334     move-object/from16 v0, p0
7336     invoke-direct {v0, v2, v1}, Lcom/android/server/am/ActivityManagerService;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;Z)V
7338     goto :goto_af
7340     :cond_d7
7341     if-eqz v10, :cond_34
7343     invoke-virtual {v7}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
7345     move-result-object v11
7347     new-instance v15, Ljava/util/ArrayList;
7349     invoke-direct {v15}, Ljava/util/ArrayList;-><init>()V
7351     move-object/from16 v0, p0
7353     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
7355     invoke-virtual {v1}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
7357     move-result-object v12
7359     invoke-virtual {v12}, Ljava/util/HashMap;->values()Ljava/util/Collection;
7361     move-result-object v1
7363     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
7365     move-result-object v9
7367     :cond_f2
7368     invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
7370     move-result v1
7372     if-eqz v1, :cond_124
7374     invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
7376     move-result-object v17
7378     check-cast v17, Landroid/util/SparseArray;
7380     const/4 v8, 0x0
7382     :goto_ff
7383     invoke-virtual/range {v17 .. v17}, Landroid/util/SparseArray;->size()I
7385     move-result v1
7387     if-ge v8, v1, :cond_f2
7389     move-object/from16 v0, v17
7391     invoke-virtual {v0, v8}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
7393     move-result-object v14
7395     check-cast v14, Lcom/android/server/am/ProcessRecord;
7397     iget v1, v14, Lcom/android/server/am/ProcessRecord;->userId:I
7399     move-object/from16 v0, p1
7401     iget v3, v0, Lcom/android/server/am/TaskRecord;->userId:I
7403     if-eq v1, v3, :cond_118
7405     :cond_115
7406     :goto_115
7407     add-int/lit8 v8, v8, 0x1
7409     goto :goto_ff
7411     :cond_118
7412     iget-object v1, v14, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
7414     invoke-virtual {v1, v11}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
7416     move-result v1
7418     if-eqz v1, :cond_115
7420     invoke-virtual {v15, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
7422     goto :goto_115
7424     :cond_124
7425     const/4 v8, 0x0
7427     :goto_125
7428     invoke-virtual {v15}, Ljava/util/ArrayList;->size()I
7430     move-result v1
7432     if-ge v8, v1, :cond_34
7434     invoke-virtual {v15, v8}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7436     move-result-object v13
7438     check-cast v13, Lcom/android/server/am/ProcessRecord;
7440     iget v1, v13, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
7442     if-nez v1, :cond_186
7444     const-string v1, "ActivityManager"
7446     new-instance v3, Ljava/lang/StringBuilder;
7448     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
7450     const-string v4, "Killing "
7452     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7454     move-result-object v3
7456     invoke-virtual {v13}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
7458     move-result-object v4
7460     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7462     move-result-object v3
7464     const-string v4, ": remove task"
7466     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
7468     move-result-object v3
7470     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
7472     move-result-object v3
7474     invoke-static {v1, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
7476     const/16 v1, 0x7547
7478     const/4 v3, 0x4
7480     new-array v3, v3, [Ljava/lang/Object;
7482     const/4 v4, 0x0
7484     iget v6, v13, Lcom/android/server/am/ProcessRecord;->pid:I
7486     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
7488     move-result-object v6
7490     aput-object v6, v3, v4
7492     const/4 v4, 0x1
7494     iget-object v6, v13, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
7496     aput-object v6, v3, v4
7498     const/4 v4, 0x2
7500     iget v6, v13, Lcom/android/server/am/ProcessRecord;->setAdj:I
7502     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
7504     move-result-object v6
7506     aput-object v6, v3, v4
7508     const/4 v4, 0x3
7510     const-string v6, "remove task"
7512     aput-object v6, v3, v4
7514     invoke-static {v1, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
7516     const/4 v1, 0x1
7518     iput-boolean v1, v13, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
7520     iget v1, v13, Lcom/android/server/am/ProcessRecord;->pid:I
7522     invoke-static {v1}, Landroid/os/Process;->killProcessQuiet(I)V
7524     :goto_183
7525     add-int/lit8 v8, v8, 0x1
7527     goto :goto_125
7529     :cond_186
7530     const-string v1, "remove task"
7532     iput-object v1, v13, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
7534     goto :goto_183
7535 .end method
7537 .method private clearProfilerLocked()V
7538     .registers 4
7540     const/4 v2, 0x0
7542     const/4 v1, 0x0
7544     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
7546     if-eqz v0, :cond_b
7548     :try_start_6
7549     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
7551     invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->close()V
7552     :try_end_b
7553     .catch Ljava/io/IOException; {:try_start_6 .. :try_end_b} :catch_16
7555     :cond_b
7556     :goto_b
7557     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
7559     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
7561     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
7563     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
7565     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
7567     return-void
7569     :catch_16
7570     move-exception v0
7572     goto :goto_b
7573 .end method
7575 .method private comeOutOfSleepIfNeededLocked()V
7576     .registers 3
7578     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
7580     if-nez v0, :cond_1a
7582     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
7584     if-nez v0, :cond_1a
7586     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
7588     if-eqz v0, :cond_1a
7590     const/4 v0, 0x0
7592     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
7594     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
7596     invoke-virtual {v0}, Lcom/android/server/am/ActivityStack;->awakeFromSleepingLocked()V
7598     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
7600     const/4 v1, 0x0
7602     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
7604     :cond_1a
7605     return-void
7606 .end method
7608 .method private final computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZZ)I
7609     .registers 43
7611     move-object/from16 v0, p0
7613     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7615     move-object/from16 v0, p1
7617     iget v5, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7619     if-ne v2, v5, :cond_29
7621     if-nez p4, :cond_24
7623     move-object/from16 v0, p1
7625     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7627     if-eqz v2, :cond_24
7629     move/from16 v0, p2
7631     move-object/from16 v1, p1
7633     iput v0, v1, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
7635     move/from16 v0, p2
7637     move-object/from16 v1, p1
7639     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7641     move/from16 v0, p2
7643     move-object/from16 v1, p1
7645     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curAdj:I
7647     :cond_24
7648     move-object/from16 v0, p1
7650     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7652     :goto_28
7653     return v2
7655     :cond_29
7656     move-object/from16 v0, p1
7658     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
7660     if-nez v2, :cond_43
7662     move-object/from16 v0, p0
7664     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7666     move-object/from16 v0, p1
7668     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7670     const/4 v2, 0x0
7672     move-object/from16 v0, p1
7674     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
7676     const/16 v2, 0xf
7678     move-object/from16 v0, p1
7680     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
7682     goto :goto_28
7684     :cond_43
7685     const/4 v2, 0x0
7687     move-object/from16 v0, p1
7689     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
7691     const/4 v2, 0x0
7693     move-object/from16 v0, p1
7695     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
7697     const/4 v2, 0x0
7699     move-object/from16 v0, p1
7701     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
7703     const/4 v2, 0x0
7705     move-object/from16 v0, p1
7707     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->empty:Z
7709     const/4 v2, 0x0
7711     move-object/from16 v0, p1
7713     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7715     move-object/from16 v0, p1
7717     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7719     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
7721     move-result v10
7723     move-object/from16 v0, p1
7725     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7727     if-gtz v2, :cond_d0
7729     const-string v2, "fixed"
7731     move-object/from16 v0, p1
7733     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7735     move-object/from16 v0, p0
7737     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7739     move-object/from16 v0, p1
7741     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7743     move-object/from16 v0, p1
7745     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7747     move-object/from16 v0, p1
7749     iput v2, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
7751     move-object/from16 v0, p1
7753     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7755     const/4 v2, 0x0
7757     move-object/from16 v0, p1
7759     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
7761     const/4 v2, 0x1
7763     move-object/from16 v0, p1
7765     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
7767     const/4 v2, -0x1
7769     move-object/from16 v0, p1
7771     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
7773     const/4 v2, 0x1
7775     move-object/from16 v0, p1
7777     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7779     move-object/from16 v0, p1
7781     move-object/from16 v1, p3
7783     if-ne v0, v1, :cond_ad
7785     const/4 v2, 0x0
7787     move-object/from16 v0, p1
7789     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7791     :cond_a3
7792     :goto_a3
7793     move-object/from16 v0, p1
7795     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7797     move-object/from16 v0, p1
7799     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
7801     goto/16 :goto_28
7803     :cond_ad
7804     if-lez v10, :cond_a3
7806     const/16 v25, 0x0
7808     :goto_b1
7809     move/from16 v0, v25
7811     if-ge v0, v10, :cond_a3
7813     move-object/from16 v0, p1
7815     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7817     move/from16 v0, v25
7819     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7821     move-result-object v32
7823     check-cast v32, Lcom/android/server/am/ActivityRecord;
7825     move-object/from16 v0, v32
7827     iget-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->visible:Z
7829     if-eqz v2, :cond_cd
7831     const/4 v2, 0x0
7833     move-object/from16 v0, p1
7835     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7837     goto :goto_a3
7839     :cond_cd
7840     add-int/lit8 v25, v25, 0x1
7842     goto :goto_b1
7844     :cond_d0
7845     const/4 v2, 0x0
7847     move-object/from16 v0, p1
7849     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
7851     const/4 v2, 0x0
7853     move-object/from16 v0, p1
7855     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7857     const/16 v19, 0x0
7859     const/16 v23, 0x0
7861     move-object/from16 v0, p1
7863     move-object/from16 v1, p3
7865     if-ne v0, v1, :cond_258
7867     const/4 v11, 0x0
7869     const/16 v34, -0x1
7871     const-string v2, "top-activity"
7873     move-object/from16 v0, p1
7875     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7877     const/16 v19, 0x1
7879     const/16 v23, 0x1
7881     :goto_f1
7882     const/16 v20, 0x0
7884     if-nez v19, :cond_122
7886     if-lez v10, :cond_122
7888     const/16 v25, 0x0
7890     :goto_f9
7891     move/from16 v0, v25
7893     if-ge v0, v10, :cond_122
7895     move-object/from16 v0, p1
7897     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7899     move/from16 v0, v25
7901     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7903     move-result-object v32
7905     check-cast v32, Lcom/android/server/am/ActivityRecord;
7907     move-object/from16 v0, v32
7909     iget-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->visible:Z
7911     if-eqz v2, :cond_2c5
7913     const/4 v2, 0x1
7915     if-le v11, v2, :cond_119
7917     const/4 v11, 0x1
7919     const-string v2, "visible"
7921     move-object/from16 v0, p1
7923     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7925     :cond_119
7926     const/16 v34, -0x1
7928     const/4 v2, 0x0
7930     move-object/from16 v0, p1
7932     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7934     const/16 v19, 0x1
7936     :cond_122
7937     const/4 v2, 0x2
7939     if-le v11, v2, :cond_139
7941     move-object/from16 v0, p1
7943     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
7945     if-eqz v2, :cond_2fc
7947     const/4 v11, 0x2
7949     const/4 v2, 0x0
7951     move-object/from16 v0, p1
7953     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7955     const-string v2, "foreground-service"
7957     move-object/from16 v0, p1
7959     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7961     const/16 v34, -0x1
7963     :cond_139
7964     :goto_139
7965     move-object/from16 v0, p1
7967     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
7969     if-eqz v2, :cond_141
7971     const/16 v23, 0x1
7973     :cond_141
7974     const/4 v2, 0x3
7976     if-le v11, v2, :cond_15a
7978     move-object/from16 v0, p0
7980     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
7982     move-object/from16 v0, p1
7984     if-ne v0, v2, :cond_15a
7986     const/4 v11, 0x3
7988     const/16 v34, 0x0
7990     const/4 v2, 0x0
7992     move-object/from16 v0, p1
7994     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7996     const-string v2, "heavy"
7998     move-object/from16 v0, p1
8000     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8002     :cond_15a
8003     const/4 v2, 0x6
8005     if-le v11, v2, :cond_173
8007     move-object/from16 v0, p0
8009     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8011     move-object/from16 v0, p1
8013     if-ne v0, v2, :cond_173
8015     const/4 v11, 0x6
8017     const/16 v34, 0x0
8019     const/4 v2, 0x0
8021     move-object/from16 v0, p1
8023     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8025     const-string v2, "home"
8027     move-object/from16 v0, p1
8029     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8031     :cond_173
8032     const/4 v2, 0x7
8034     if-le v11, v2, :cond_196
8036     move-object/from16 v0, p0
8038     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
8040     move-object/from16 v0, p1
8042     if-ne v0, v2, :cond_196
8044     move-object/from16 v0, p1
8046     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
8048     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
8050     move-result v2
8052     if-lez v2, :cond_196
8054     const/4 v11, 0x7
8056     const/16 v34, 0x0
8058     const/4 v2, 0x0
8060     move-object/from16 v0, p1
8062     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8064     const-string v2, "previous"
8066     move-object/from16 v0, p1
8068     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8070     :cond_196
8071     move-object/from16 v0, p0
8073     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
8075     move-object/from16 v0, p1
8077     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
8079     move-object/from16 v0, p1
8081     iput v11, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
8083     move-object/from16 v0, p1
8085     iput v11, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
8087     move-object/from16 v0, p0
8089     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
8091     if-eqz v2, :cond_1c5
8093     move-object/from16 v0, p0
8095     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
8097     iget-object v2, v2, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
8099     move-object/from16 v0, p1
8101     if-ne v0, v2, :cond_1c5
8103     const/4 v2, 0x4
8105     if-le v11, v2, :cond_1c5
8107     const/4 v11, 0x4
8109     const-string v2, "backup"
8111     move-object/from16 v0, p1
8113     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8115     const/4 v2, 0x0
8117     move-object/from16 v0, p1
8119     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8121     :cond_1c5
8122     move-object/from16 v0, p1
8124     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
8126     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
8128     move-result v2
8130     if-eqz v2, :cond_482
8132     if-gtz v11, :cond_1d3
8134     if-nez v34, :cond_482
8136     :cond_1d3
8137     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
8139     move-result-wide v29
8141     move-object/from16 v0, p1
8143     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
8145     invoke-virtual {v2}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
8147     move-result-object v27
8149     :cond_1df
8150     invoke-interface/range {v27 .. v27}, Ljava/util/Iterator;->hasNext()Z
8152     move-result v2
8154     if-eqz v2, :cond_471
8156     if-lez v11, :cond_471
8158     invoke-interface/range {v27 .. v27}, Ljava/util/Iterator;->next()Ljava/lang/Object;
8160     move-result-object v33
8162     check-cast v33, Lcom/android/server/am/ServiceRecord;
8164     move-object/from16 v0, v33
8166     iget-boolean v2, v0, Lcom/android/server/am/ServiceRecord;->startRequested:Z
8168     if-eqz v2, :cond_20f
8170     move-object/from16 v0, p1
8172     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8174     if-eqz v2, :cond_31a
8176     move-object/from16 v0, p0
8178     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8180     move-object/from16 v0, p1
8182     if-eq v0, v2, :cond_31a
8184     const/4 v2, 0x5
8186     if-le v11, v2, :cond_20a
8188     const-string v2, "started-bg-ui-services"
8190     move-object/from16 v0, p1
8192     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8194     :cond_20a
8195     :goto_20a
8196     const/4 v2, 0x1
8198     move-object/from16 v0, p1
8200     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8202     :cond_20f
8203     move-object/from16 v0, v33
8205     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
8207     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
8209     move-result v2
8211     if-lez v2, :cond_1df
8213     if-gtz v11, :cond_21d
8215     if-nez v34, :cond_1df
8217     :cond_21d
8218     move-object/from16 v0, v33
8220     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
8222     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
8224     move-result-object v2
8226     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
8228     move-result-object v28
8230     :cond_229
8231     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->hasNext()Z
8233     move-result v2
8235     if-eqz v2, :cond_1df
8237     if-lez v11, :cond_1df
8239     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->next()Ljava/lang/Object;
8241     move-result-object v15
8243     check-cast v15, Ljava/util/ArrayList;
8245     const/16 v21, 0x0
8247     :goto_239
8248     invoke-virtual {v15}, Ljava/util/ArrayList;->size()I
8250     move-result v2
8252     move/from16 v0, v21
8254     if-ge v0, v2, :cond_229
8256     if-lez v11, :cond_229
8258     move/from16 v0, v21
8260     invoke-virtual {v15, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
8262     move-result-object v18
8264     check-cast v18, Lcom/android/server/am/ConnectionRecord;
8266     move-object/from16 v0, v18
8268     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
8270     iget-object v2, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
8272     move-object/from16 v0, p1
8274     if-ne v2, v0, :cond_341
8276     :cond_255
8277     :goto_255
8278     add-int/lit8 v21, v21, 0x1
8280     goto :goto_239
8282     :cond_258
8283     move-object/from16 v0, p1
8285     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
8287     if-eqz v2, :cond_26b
8289     const/4 v11, 0x0
8291     const/16 v34, -0x1
8293     const-string v2, "instrumentation"
8295     move-object/from16 v0, p1
8297     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8299     const/16 v23, 0x1
8301     goto/16 :goto_f1
8303     :cond_26b
8304     invoke-direct/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->isReceivingBroadcast(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastQueue;
8306     move-result-object v31
8308     if-eqz v31, :cond_287
8310     const/4 v11, 0x0
8312     move-object/from16 v0, p0
8314     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
8316     move-object/from16 v0, v31
8318     if-ne v0, v2, :cond_284
8320     const/16 v34, -0x1
8322     :goto_27c
8323     const-string v2, "broadcast"
8325     move-object/from16 v0, p1
8327     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8329     goto/16 :goto_f1
8331     :cond_284
8332     const/16 v34, 0x0
8334     goto :goto_27c
8336     :cond_287
8337     move-object/from16 v0, p1
8339     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
8341     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
8343     move-result v2
8345     if-lez v2, :cond_29c
8347     const/4 v11, 0x0
8349     const/16 v34, -0x1
8351     const-string v2, "exec-service"
8353     move-object/from16 v0, p1
8355     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8357     goto/16 :goto_f1
8359     :cond_29c
8360     if-lez v10, :cond_2af
8362     move/from16 v11, p2
8364     const/16 v34, 0x0
8366     const/4 v2, 0x1
8368     move-object/from16 v0, p1
8370     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8372     const-string v2, "bg-activities"
8374     move-object/from16 v0, p1
8376     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8378     goto/16 :goto_f1
8380     :cond_2af
8381     move/from16 v11, p2
8383     const/16 v34, 0x0
8385     const/4 v2, 0x1
8387     move-object/from16 v0, p1
8389     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8391     const/4 v2, 0x1
8393     move-object/from16 v0, p1
8395     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->empty:Z
8397     const-string v2, "bg-empty"
8399     move-object/from16 v0, p1
8401     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8403     goto/16 :goto_f1
8405     :cond_2c5
8406     move-object/from16 v0, v32
8408     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8410     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
8412     if-eq v2, v5, :cond_2d5
8414     move-object/from16 v0, v32
8416     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8418     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSED:Lcom/android/server/am/ActivityStack$ActivityState;
8420     if-ne v2, v5, :cond_2ea
8422     :cond_2d5
8423     const/4 v2, 0x2
8425     if-le v11, v2, :cond_2df
8427     const/4 v11, 0x2
8429     const-string v2, "pausing"
8431     move-object/from16 v0, p1
8433     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8435     :cond_2df
8436     const/4 v2, 0x0
8438     move-object/from16 v0, p1
8440     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8442     const/16 v19, 0x1
8444     :cond_2e6
8445     :goto_2e6
8446     add-int/lit8 v25, v25, 0x1
8448     goto/16 :goto_f9
8450     :cond_2ea
8451     move-object/from16 v0, v32
8453     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8455     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->STOPPING:Lcom/android/server/am/ActivityStack$ActivityState;
8457     if-ne v2, v5, :cond_2e6
8459     const/4 v2, 0x0
8461     move-object/from16 v0, p1
8463     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8465     const/16 v19, 0x1
8467     const/16 v20, 0x1
8469     goto :goto_2e6
8471     :cond_2fc
8472     move-object/from16 v0, p1
8474     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
8476     if-eqz v2, :cond_139
8478     const/4 v11, 0x2
8480     const/4 v2, 0x0
8482     move-object/from16 v0, p1
8484     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8486     const-string v2, "force-foreground"
8488     move-object/from16 v0, p1
8490     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8492     move-object/from16 v0, p1
8494     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
8496     move-object/from16 v0, p1
8498     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8500     const/16 v34, -0x1
8502     goto/16 :goto_139
8504     :cond_31a
8505     move-object/from16 v0, v33
8507     iget-wide v5, v0, Lcom/android/server/am/ServiceRecord;->lastActivity:J
8509     const-wide/32 v35, 0x1b7740
8511     add-long v5, v5, v35
8513     cmp-long v2, v29, v5
8515     if-gez v2, :cond_336
8517     const/4 v2, 0x5
8519     if-le v11, v2, :cond_336
8521     const/4 v11, 0x5
8523     const-string v2, "started-services"
8525     move-object/from16 v0, p1
8527     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8529     const/4 v2, 0x0
8531     move-object/from16 v0, p1
8533     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8535     :cond_336
8536     const/4 v2, 0x5
8538     if-le v11, v2, :cond_20a
8540     const-string v2, "started-bg-services"
8542     move-object/from16 v0, p1
8544     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8546     goto/16 :goto_20a
8548     :cond_341
8549     move-object/from16 v0, v18
8551     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8553     and-int/lit8 v2, v2, 0x20
8555     if-nez v2, :cond_3ce
8557     move-object/from16 v0, v18
8559     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
8561     iget-object v3, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
8563     move v14, v11
8565     move/from16 v4, p2
8567     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8569     if-le v4, v2, :cond_35d
8571     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8573     const/4 v5, 0x1
8575     if-lt v2, v5, :cond_41b
8577     iget v4, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8579     :cond_35d
8580     :goto_35d
8581     const/4 v6, 0x1
8583     move-object/from16 v2, p0
8585     move-object/from16 v5, p3
8587     move/from16 v7, p5
8589     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZZ)I
8591     move-result v14
8593     const/4 v12, 0x0
8595     move-object/from16 v0, v18
8597     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8599     and-int/lit8 v2, v2, 0x10
8601     if-eqz v2, :cond_389
8603     move-object/from16 v0, p1
8605     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8607     if-eqz v2, :cond_41e
8609     move-object/from16 v0, p0
8611     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8613     move-object/from16 v0, p1
8615     if-eq v0, v2, :cond_41e
8617     if-le v11, v14, :cond_383
8619     const-string v12, "bound-bg-ui-services"
8621     :cond_383
8622     const/4 v2, 0x0
8624     move-object/from16 v0, p1
8626     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8628     move v14, v11
8630     :cond_389
8631     :goto_389
8632     if-le v11, v14, :cond_39e
8634     move-object/from16 v0, p1
8636     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8638     if-eqz v2, :cond_432
8640     move-object/from16 v0, p0
8642     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8644     move-object/from16 v0, p1
8646     if-eq v0, v2, :cond_432
8648     const/4 v2, 0x2
8650     if-le v14, v2, :cond_432
8652     const-string v12, "bound-bg-ui-services"
8654     :cond_39e
8655     :goto_39e
8656     if-eqz v12, :cond_3bf
8658     move-object/from16 v0, p1
8660     iput-object v12, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8662     const/4 v2, 0x2
8664     move-object/from16 v0, p1
8666     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
8668     move-object/from16 v0, v18
8670     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
8672     iget-object v2, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
8674     move-object/from16 v0, p1
8676     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8678     move-object/from16 v0, p1
8680     iput v14, v0, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
8682     move-object/from16 v0, v33
8684     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
8686     move-object/from16 v0, p1
8688     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8690     :cond_3bf
8691     move-object/from16 v0, v18
8693     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8695     and-int/lit8 v2, v2, 0x4
8697     if-nez v2, :cond_3ce
8699     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
8701     const/4 v5, -0x1
8703     if-ne v2, v5, :cond_3ce
8705     const/16 v34, -0x1
8707     :cond_3ce
8708     move-object/from16 v0, v18
8710     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8712     and-int/lit16 v2, v2, 0x80
8714     if-eqz v2, :cond_255
8716     move-object/from16 v0, v18
8718     iget-object v9, v0, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
8720     if-eqz v9, :cond_255
8722     if-lez v11, :cond_255
8724     iget-boolean v2, v9, Lcom/android/server/am/ActivityRecord;->visible:Z
8726     if-nez v2, :cond_3ee
8728     iget-object v2, v9, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8730     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
8732     if-eq v2, v5, :cond_3ee
8734     iget-object v2, v9, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8736     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
8738     if-ne v2, v5, :cond_255
8740     :cond_3ee
8741     const/4 v11, 0x0
8743     move-object/from16 v0, v18
8745     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8747     and-int/lit8 v2, v2, 0x4
8749     if-nez v2, :cond_3f9
8751     const/16 v34, -0x1
8753     :cond_3f9
8754     const/4 v2, 0x0
8756     move-object/from16 v0, p1
8758     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8760     const-string v2, "service"
8762     move-object/from16 v0, p1
8764     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8766     const/4 v2, 0x2
8768     move-object/from16 v0, p1
8770     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
8772     move-object/from16 v0, p1
8774     iput-object v9, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8776     move-object/from16 v0, p1
8778     iput v11, v0, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
8780     move-object/from16 v0, v33
8782     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
8784     move-object/from16 v0, p1
8786     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8788     goto/16 :goto_255
8790     :cond_41b
8791     const/4 v4, 0x1
8793     goto/16 :goto_35d
8795     :cond_41e
8796     move-object/from16 v0, v33
8798     iget-wide v5, v0, Lcom/android/server/am/ServiceRecord;->lastActivity:J
8800     const-wide/32 v35, 0x1b7740
8802     add-long v5, v5, v35
8804     cmp-long v2, v29, v5
8806     if-ltz v2, :cond_389
8808     if-le v11, v14, :cond_42f
8810     const-string v12, "bound-bg-services"
8812     :cond_42f
8813     move v14, v11
8815     goto/16 :goto_389
8817     :cond_432
8818     move-object/from16 v0, v18
8820     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8822     and-int/lit8 v2, v2, 0x48
8824     if-eqz v2, :cond_451
8826     move v11, v14
8828     :cond_43b
8829     :goto_43b
8830     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hidden:Z
8832     if-nez v2, :cond_444
8834     const/4 v2, 0x0
8836     move-object/from16 v0, p1
8838     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8840     :cond_444
8841     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->keeping:Z
8843     if-eqz v2, :cond_44d
8845     const/4 v2, 0x1
8847     move-object/from16 v0, p1
8849     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8851     :cond_44d
8852     const-string v12, "service"
8854     goto/16 :goto_39e
8856     :cond_451
8857     move-object/from16 v0, v18
8859     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8861     const/high16 v5, 0x4000
8863     and-int/2addr v2, v5
8865     if-eqz v2, :cond_462
8867     const/4 v2, 0x2
8869     if-ge v14, v2, :cond_462
8871     const/4 v2, 0x2
8873     if-le v11, v2, :cond_462
8875     const/4 v11, 0x2
8877     goto :goto_43b
8879     :cond_462
8880     const/4 v2, 0x1
8882     if-le v14, v2, :cond_467
8884     move v11, v14
8886     goto :goto_43b
8888     :cond_467
8889     const/4 v2, 0x1
8891     move-object/from16 v0, p1
8893     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
8895     const/4 v2, 0x1
8897     if-le v11, v2, :cond_43b
8899     const/4 v11, 0x1
8901     goto :goto_43b
8903     :cond_471
8904     move/from16 v0, p2
8906     if-le v11, v0, :cond_482
8908     move/from16 v11, p2
8910     const/4 v2, 0x0
8912     move-object/from16 v0, p1
8914     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8916     const-string v2, "bg-services"
8918     move-object/from16 v0, p1
8920     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8922     :cond_482
8923     move-object/from16 v0, p1
8925     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
8927     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
8929     move-result v2
8931     if-eqz v2, :cond_565
8933     if-gtz v11, :cond_490
8935     if-nez v34, :cond_565
8937     :cond_490
8938     move-object/from16 v0, p1
8940     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
8942     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
8944     move-result-object v2
8946     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
8948     move-result-object v26
8950     :cond_49c
8951     :goto_49c
8952     invoke-interface/range {v26 .. v26}, Ljava/util/Iterator;->hasNext()Z
8954     move-result v2
8956     if-eqz v2, :cond_565
8958     if-gtz v11, :cond_4a6
8960     if-nez v34, :cond_565
8962     :cond_4a6
8963     invoke-interface/range {v26 .. v26}, Ljava/util/Iterator;->next()Ljava/lang/Object;
8965     move-result-object v17
8967     check-cast v17, Lcom/android/server/am/ContentProviderRecord;
8969     move-object/from16 v0, v17
8971     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
8973     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
8975     move-result v2
8977     add-int/lit8 v21, v2, -0x1
8979     :goto_4b6
8980     if-ltz v21, :cond_540
8982     if-gtz v11, :cond_4bc
8984     if-nez v34, :cond_540
8986     :cond_4bc
8987     move-object/from16 v0, v17
8989     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
8991     move/from16 v0, v21
8993     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
8995     move-result-object v16
8997     check-cast v16, Lcom/android/server/am/ContentProviderConnection;
8999     move-object/from16 v0, v16
9001     iget-object v3, v0, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
9003     move-object/from16 v0, p1
9005     if-ne v3, v0, :cond_4d3
9007     :cond_4d0
9008     :goto_4d0
9009     add-int/lit8 v21, v21, -0x1
9011     goto :goto_4b6
9013     :cond_4d3
9014     move/from16 v4, p2
9016     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
9018     if-le v4, v2, :cond_4df
9020     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
9022     if-lez v2, :cond_532
9024     iget v4, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
9026     :cond_4df
9027     :goto_4df
9028     const/4 v6, 0x1
9030     move-object/from16 v2, p0
9032     move-object/from16 v5, p3
9034     move/from16 v7, p5
9036     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZZ)I
9038     move-result v14
9040     if-le v11, v14, :cond_52a
9042     move-object/from16 v0, p1
9044     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
9046     if-eqz v2, :cond_534
9048     move-object/from16 v0, p0
9050     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
9052     move-object/from16 v0, p1
9054     if-eq v0, v2, :cond_534
9056     const/4 v2, 0x2
9058     if-le v14, v2, :cond_534
9060     const-string v2, "bg-ui-provider"
9062     move-object/from16 v0, p1
9064     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
9066     :goto_503
9067     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hidden:Z
9069     if-nez v2, :cond_50c
9071     const/4 v2, 0x0
9073     move-object/from16 v0, p1
9075     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
9077     :cond_50c
9078     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->keeping:Z
9080     if-eqz v2, :cond_515
9082     const/4 v2, 0x1
9084     move-object/from16 v0, p1
9086     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
9088     :cond_515
9089     const/4 v2, 0x1
9091     move-object/from16 v0, p1
9093     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
9095     move-object/from16 v0, p1
9097     iput-object v3, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
9099     move-object/from16 v0, p1
9101     iput v14, v0, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
9103     move-object/from16 v0, v17
9105     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
9107     move-object/from16 v0, p1
9109     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
9111     :cond_52a
9112     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
9114     const/4 v5, -0x1
9116     if-ne v2, v5, :cond_4d0
9118     const/16 v34, -0x1
9120     goto :goto_4d0
9122     :cond_532
9123     const/4 v4, 0x0
9125     goto :goto_4df
9127     :cond_534
9128     if-lez v14, :cond_53e
9130     move v11, v14
9132     :goto_537
9133     const-string v2, "provider"
9135     move-object/from16 v0, p1
9137     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
9139     goto :goto_503
9141     :cond_53e
9142     const/4 v11, 0x0
9144     goto :goto_537
9146     :cond_540
9147     invoke-virtual/range {v17 .. v17}, Lcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
9149     move-result v2
9151     if-eqz v2, :cond_49c
9153     if-lez v11, :cond_49c
9155     const/4 v11, 0x0
9157     const/16 v34, -0x1
9159     const/4 v2, 0x0
9161     move-object/from16 v0, p1
9163     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
9165     const/4 v2, 0x1
9167     move-object/from16 v0, p1
9169     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
9171     const-string v2, "provider"
9173     move-object/from16 v0, p1
9175     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
9177     move-object/from16 v0, v17
9179     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
9181     move-object/from16 v0, p1
9183     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
9185     goto/16 :goto_49c
9187     :cond_565
9188     const/4 v2, 0x5
9190     if-ne v11, v2, :cond_69b
9192     if-eqz p5, :cond_585
9194     move-object/from16 v0, p0
9196     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
9198     move-object/from16 v0, p0
9200     iget v5, v0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
9202     div-int/lit8 v5, v5, 0x3
9204     if-le v2, v5, :cond_698
9206     const/4 v2, 0x1
9208     :goto_577
9209     move-object/from16 v0, p1
9211     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
9213     move-object/from16 v0, p0
9215     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
9217     add-int/lit8 v2, v2, 0x1
9219     move-object/from16 v0, p0
9221     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
9223     :cond_585
9224     move-object/from16 v0, p1
9226     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
9228     if-eqz v2, :cond_58d
9230     const/16 v11, 0x8
9232     :cond_58d
9233     :goto_58d
9234     move-object/from16 v0, p1
9236     iput v11, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
9238     if-eqz v20, :cond_59d
9240     const/4 v2, 0x2
9242     if-le v11, v2, :cond_59d
9244     const/4 v11, 0x2
9246     const-string v2, "stopping"
9248     move-object/from16 v0, p1
9250     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
9252     :cond_59d
9253     move-object/from16 v0, p1
9255     iput v11, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
9257     move-object/from16 v0, p1
9259     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
9261     if-le v11, v2, :cond_5b4
9263     move-object/from16 v0, p1
9265     iget v11, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
9267     move-object/from16 v0, p1
9269     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
9271     const/4 v5, 0x2
9273     if-gt v2, v5, :cond_5b4
9275     const/16 v34, -0x1
9277     :cond_5b4
9278     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9280     if-ge v11, v2, :cond_5bd
9282     const/4 v2, 0x1
9284     move-object/from16 v0, p1
9286     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
9288     :cond_5bd
9289     move-object/from16 v0, p1
9291     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
9293     if-eqz v2, :cond_5c5
9295     if-gez v11, :cond_6a2
9297     :cond_5c5
9298     :goto_5c5
9299     move-object/from16 v0, p1
9301     iget v0, v0, Lcom/android/server/am/ProcessRecord;->memImportance:I
9303     move/from16 v22, v0
9305     if-eqz v22, :cond_5db
9307     move-object/from16 v0, p1
9309     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
9311     if-ne v11, v2, :cond_5db
9313     move-object/from16 v0, p1
9315     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
9317     move/from16 v0, v34
9319     if-eq v0, v2, :cond_5e9
9321     :cond_5db
9322     move-object/from16 v0, p1
9324     iput v11, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
9326     move/from16 v0, v34
9328     move-object/from16 v1, p1
9330     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
9332     if-nez v23, :cond_6be
9334     const/16 v22, 0x190
9336     :cond_5e9
9337     :goto_5e9
9338     move-object/from16 v0, p1
9340     iget v2, v0, Lcom/android/server/am/ProcessRecord;->memImportance:I
9342     move/from16 v0, v22
9344     if-eq v0, v2, :cond_6fb
9346     const/4 v13, 0x2
9348     :goto_5f2
9349     move-object/from16 v0, p1
9351     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
9353     move/from16 v0, v19
9355     if-eq v0, v2, :cond_5fc
9357     or-int/lit8 v13, v13, 0x1
9359     :cond_5fc
9360     if-eqz v13, :cond_692
9362     move/from16 v0, v22
9364     move-object/from16 v1, p1
9366     iput v0, v1, Lcom/android/server/am/ProcessRecord;->memImportance:I
9368     move/from16 v0, v19
9370     move-object/from16 v1, p1
9372     iput-boolean v0, v1, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
9374     move-object/from16 v0, p0
9376     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9378     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
9380     move-result v2
9382     add-int/lit8 v21, v2, -0x1
9384     const/16 v24, 0x0
9386     :goto_616
9387     if-ltz v21, :cond_62e
9389     move-object/from16 v0, p0
9391     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9393     move/from16 v0, v21
9395     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
9397     move-result-object v24
9399     check-cast v24, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9401     move-object/from16 v0, v24
9403     iget v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
9405     move-object/from16 v0, p1
9407     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
9409     if-ne v2, v5, :cond_6fe
9411     :cond_62e
9412     if-gez v21, :cond_67d
9414     move-object/from16 v0, p0
9416     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
9418     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
9420     move-result v8
9422     if-lez v8, :cond_702
9424     move-object/from16 v0, p0
9426     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
9428     add-int/lit8 v5, v8, -0x1
9430     invoke-virtual {v2, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
9432     move-result-object v24
9434     check-cast v24, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9436     :goto_646
9437     const/4 v2, 0x0
9439     move-object/from16 v0, v24
9441     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9443     move-object/from16 v0, p1
9445     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
9447     move-object/from16 v0, v24
9449     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
9451     move-object/from16 v0, p1
9453     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
9455     iget v2, v2, Landroid/content/pm/ApplicationInfo;->uid:I
9457     move-object/from16 v0, v24
9459     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
9461     move-object/from16 v0, p0
9463     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9465     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
9467     move-result v2
9469     if-nez v2, :cond_674
9471     move-object/from16 v0, p0
9473     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
9475     const/16 v5, 0x1f
9477     invoke-virtual {v2, v5}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
9479     move-result-object v2
9481     invoke-virtual {v2}, Landroid/os/Message;->sendToTarget()V
9483     :cond_674
9484     move-object/from16 v0, p0
9486     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9488     move-object/from16 v0, v24
9490     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
9492     :cond_67d
9493     move-object/from16 v0, v24
9495     iget v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9497     or-int/2addr v2, v13
9499     move-object/from16 v0, v24
9501     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9503     move/from16 v0, v22
9505     move-object/from16 v1, v24
9507     iput v0, v1, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->importance:I
9509     move/from16 v0, v19
9511     move-object/from16 v1, v24
9513     iput-boolean v0, v1, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->foregroundActivities:Z
9515     :cond_692
9516     move-object/from16 v0, p1
9518     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
9520     goto/16 :goto_28
9522     :cond_698
9523     const/4 v2, 0x0
9525     goto/16 :goto_577
9527     :cond_69b
9528     const/4 v2, 0x0
9530     move-object/from16 v0, p1
9532     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
9534     goto/16 :goto_58d
9536     :cond_6a2
9537     const/4 v2, 0x1
9539     if-ge v11, v2, :cond_6a8
9541     const/4 v11, 0x1
9543     goto/16 :goto_5c5
9545     :cond_6a8
9546     const/4 v2, 0x2
9548     if-ge v11, v2, :cond_6ae
9550     const/4 v11, 0x2
9552     goto/16 :goto_5c5
9554     :cond_6ae
9555     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9557     if-ge v11, v2, :cond_6b6
9559     sget v11, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9561     goto/16 :goto_5c5
9563     :cond_6b6
9564     const/16 v2, 0xf
9566     if-ge v11, v2, :cond_5c5
9568     add-int/lit8 v11, v11, 0x1
9570     goto/16 :goto_5c5
9572     :cond_6be
9573     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9575     if-lt v11, v2, :cond_6c6
9577     const/16 v22, 0x190
9579     goto/16 :goto_5e9
9581     :cond_6c6
9582     const/16 v2, 0x8
9584     if-lt v11, v2, :cond_6ce
9586     const/16 v22, 0x12c
9588     goto/16 :goto_5e9
9590     :cond_6ce
9591     const/4 v2, 0x6
9593     if-lt v11, v2, :cond_6d5
9595     const/16 v22, 0x190
9597     goto/16 :goto_5e9
9599     :cond_6d5
9600     const/4 v2, 0x5
9602     if-lt v11, v2, :cond_6dc
9604     const/16 v22, 0x12c
9606     goto/16 :goto_5e9
9608     :cond_6dc
9609     const/4 v2, 0x3
9611     if-lt v11, v2, :cond_6e3
9613     const/16 v22, 0xaa
9615     goto/16 :goto_5e9
9617     :cond_6e3
9618     const/4 v2, 0x2
9620     if-lt v11, v2, :cond_6ea
9622     const/16 v22, 0x82
9624     goto/16 :goto_5e9
9626     :cond_6ea
9627     const/4 v2, 0x1
9629     if-lt v11, v2, :cond_6f1
9631     const/16 v22, 0xc8
9633     goto/16 :goto_5e9
9635     :cond_6f1
9636     if-ltz v11, :cond_6f7
9638     const/16 v22, 0x64
9640     goto/16 :goto_5e9
9642     :cond_6f7
9643     const/16 v22, 0x32
9645     goto/16 :goto_5e9
9647     :cond_6fb
9648     const/4 v13, 0x0
9650     goto/16 :goto_5f2
9652     :cond_6fe
9653     add-int/lit8 v21, v21, -0x1
9655     goto/16 :goto_616
9657     :cond_702
9658     new-instance v24, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9660     invoke-direct/range {v24 .. v24}, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
9662     goto/16 :goto_646
9663 .end method
9665 .method private crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
9666     .registers 27
9668     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
9670     move-result-wide v8
9672     move-object/from16 v0, p2
9674     iget-object v6, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionClassName:Ljava/lang/String;
9676     move-object/from16 v0, p2
9678     iget-object v7, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
9680     move-object/from16 v0, p2
9682     iget-object v0, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
9684     move-object/from16 v20, v0
9686     if-eqz v6, :cond_7a
9688     if-eqz v7, :cond_7a
9690     new-instance v3, Ljava/lang/StringBuilder;
9692     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
9694     invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9696     move-result-object v3
9698     const-string v10, ": "
9700     invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9702     move-result-object v3
9704     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9706     move-result-object v3
9708     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9710     move-result-object v7
9712     :cond_2d
9713     :goto_2d
9714     new-instance v19, Lcom/android/server/am/AppErrorResult;
9716     invoke-direct/range {v19 .. v19}, Lcom/android/server/am/AppErrorResult;-><init>()V
9718     monitor-enter p0
9720     :try_start_33
9721     move-object/from16 v0, p0
9723     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9724     :try_end_37
9725     .catchall {:try_start_33 .. :try_end_37} :catchall_12a
9727     if-eqz v3, :cond_8b
9729     if-eqz p1, :cond_7e
9731     :try_start_3b
9732     move-object/from16 v0, p1
9734     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
9736     :goto_3f
9737     if-eqz p1, :cond_80
9739     move-object/from16 v0, p1
9741     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
9743     :goto_45
9744     move-object/from16 v0, p0
9746     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9748     move-object/from16 v0, p2
9750     iget-object v10, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
9752     invoke-interface/range {v3 .. v10}, Landroid/app/IActivityController;->appCrashed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;JLjava/lang/String;)Z
9754     move-result v3
9756     if-nez v3, :cond_8b
9758     const-string v3, "ActivityManager"
9760     new-instance v10, Ljava/lang/StringBuilder;
9762     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9764     const-string v21, "Force-killing crashed app "
9766     move-object/from16 v0, v21
9768     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9770     move-result-object v10
9772     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9774     move-result-object v10
9776     const-string v21, " at watcher\'s request"
9778     move-object/from16 v0, v21
9780     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9782     move-result-object v10
9784     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9786     move-result-object v10
9788     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9790     invoke-static {v5}, Landroid/os/Process;->killProcess(I)V
9791     :try_end_78
9792     .catchall {:try_start_3b .. :try_end_78} :catchall_12a
9793     .catch Landroid/os/RemoteException; {:try_start_3b .. :try_end_78} :catch_85
9795     :try_start_78
9796     monitor-exit p0
9797     :try_end_79
9798     .catchall {:try_start_78 .. :try_end_79} :catchall_12a
9800     :cond_79
9801     :goto_79
9802     return-void
9804     :cond_7a
9805     if-eqz v6, :cond_2d
9807     move-object v7, v6
9809     goto :goto_2d
9811     :cond_7e
9812     const/4 v4, 0x0
9814     goto :goto_3f
9816     :cond_80
9817     :try_start_80
9818     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
9819     :try_end_83
9820     .catchall {:try_start_80 .. :try_end_83} :catchall_12a
9821     .catch Landroid/os/RemoteException; {:try_start_80 .. :try_end_83} :catch_85
9823     move-result v5
9825     goto :goto_45
9827     :catch_85
9828     move-exception v13
9830     const/4 v3, 0x0
9832     :try_start_87
9833     move-object/from16 v0, p0
9835     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9837     :cond_8b
9838     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
9840     move-result-wide v16
9842     if-eqz p1, :cond_12d
9844     move-object/from16 v0, p1
9846     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
9848     if-eqz v3, :cond_12d
9850     const-string v3, "ActivityManager"
9852     new-instance v10, Ljava/lang/StringBuilder;
9854     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9856     const-string v21, "Error in app "
9858     move-object/from16 v0, v21
9860     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9862     move-result-object v10
9864     move-object/from16 v0, p1
9866     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
9868     move-object/from16 v21, v0
9870     move-object/from16 v0, v21
9872     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9874     move-result-object v10
9876     const-string v21, " running instrumentation "
9878     move-object/from16 v0, v21
9880     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9882     move-result-object v10
9884     move-object/from16 v0, p1
9886     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
9888     move-object/from16 v21, v0
9890     move-object/from16 v0, v21
9892     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
9894     move-result-object v10
9896     const-string v21, ":"
9898     move-object/from16 v0, v21
9900     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9902     move-result-object v10
9904     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9906     move-result-object v10
9908     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9910     if-eqz v6, :cond_f1
9912     const-string v3, "ActivityManager"
9914     new-instance v10, Ljava/lang/StringBuilder;
9916     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9918     const-string v21, "  "
9920     move-object/from16 v0, v21
9922     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9924     move-result-object v10
9926     invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9928     move-result-object v10
9930     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9932     move-result-object v10
9934     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9936     :cond_f1
9937     if-eqz v7, :cond_10d
9939     const-string v3, "ActivityManager"
9941     new-instance v10, Ljava/lang/StringBuilder;
9943     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9945     const-string v21, "  "
9947     move-object/from16 v0, v21
9949     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9951     move-result-object v10
9953     invoke-virtual {v10, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9955     move-result-object v10
9957     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9959     move-result-object v10
9961     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9963     :cond_10d
9964     new-instance v14, Landroid/os/Bundle;
9966     invoke-direct {v14}, Landroid/os/Bundle;-><init>()V
9968     const-string v3, "shortMsg"
9970     invoke-virtual {v14, v3, v6}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
9972     const-string v3, "longMsg"
9974     invoke-virtual {v14, v3, v7}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
9976     const/4 v3, 0x0
9978     move-object/from16 v0, p0
9980     move-object/from16 v1, p1
9982     invoke-virtual {v0, v1, v3, v14}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
9984     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
9986     monitor-exit p0
9988     goto/16 :goto_79
9990     :catchall_12a
9991     move-exception v3
9993     monitor-exit p0
9994     :try_end_12c
9995     .catchall {:try_start_87 .. :try_end_12c} :catchall_12a
9997     throw v3
9999     :cond_12d
10000     if-eqz p1, :cond_13b
10002     :try_start_12f
10003     move-object/from16 v0, p0
10005     move-object/from16 v1, p1
10007     move-object/from16 v2, v20
10009     invoke-direct {v0, v1, v6, v7, v2}, Lcom/android/server/am/ActivityManagerService;->makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
10011     move-result v3
10013     if-nez v3, :cond_141
10015     :cond_13b
10016     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
10018     monitor-exit p0
10020     goto/16 :goto_79
10022     :cond_141
10023     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
10025     move-result-object v15
10027     const/4 v3, 0x1
10029     iput v3, v15, Landroid/os/Message;->what:I
10031     new-instance v12, Ljava/util/HashMap;
10033     invoke-direct {v12}, Ljava/util/HashMap;-><init>()V
10035     const-string v3, "result"
10037     move-object/from16 v0, v19
10039     invoke-virtual {v12, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
10041     const-string v3, "app"
10043     move-object/from16 v0, p1
10045     invoke-virtual {v12, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
10047     iput-object v12, v15, Landroid/os/Message;->obj:Ljava/lang/Object;
10049     move-object/from16 v0, p0
10051     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
10053     invoke-virtual {v3, v15}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
10055     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
10057     monitor-exit p0
10058     :try_end_168
10059     .catchall {:try_start_12f .. :try_end_168} :catchall_12a
10061     invoke-virtual/range {v19 .. v19}, Lcom/android/server/am/AppErrorResult;->get()I
10063     move-result v18
10065     const/4 v11, 0x0
10067     monitor-enter p0
10069     if-eqz p1, :cond_195
10071     :try_start_170
10072     move-object/from16 v0, p1
10074     iget-boolean v3, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
10076     if-nez v3, :cond_195
10078     move-object/from16 v0, p0
10080     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
10082     move-object/from16 v0, p1
10084     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
10086     iget-object v10, v10, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
10088     move-object/from16 v0, p1
10090     iget v0, v0, Lcom/android/server/am/ProcessRecord;->uid:I
10092     move/from16 v21, v0
10094     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
10096     move-result-wide v22
10098     invoke-static/range {v22 .. v23}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
10100     move-result-object v22
10102     move/from16 v0, v21
10104     move-object/from16 v1, v22
10106     invoke-virtual {v3, v10, v0, v1}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
10108     :cond_195
10109     const/4 v3, 0x1
10111     move/from16 v0, v18
10113     if-ne v0, v3, :cond_1a4
10115     move-object/from16 v0, p0
10117     move-object/from16 v1, p1
10119     move-object/from16 v2, p2
10121     invoke-virtual {v0, v1, v8, v9, v2}, Lcom/android/server/am/ActivityManagerService;->createAppErrorIntentLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/content/Intent;
10123     move-result-object v11
10125     :cond_1a4
10126     monitor-exit p0
10127     :try_end_1a5
10128     .catchall {:try_start_170 .. :try_end_1a5} :catchall_1ba
10130     if-eqz v11, :cond_79
10132     :try_start_1a7
10133     move-object/from16 v0, p0
10135     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
10137     invoke-virtual {v3, v11}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
10138     :try_end_1ae
10139     .catch Landroid/content/ActivityNotFoundException; {:try_start_1a7 .. :try_end_1ae} :catch_1b0
10141     goto/16 :goto_79
10143     :catch_1b0
10144     move-exception v13
10146     const-string v3, "ActivityManager"
10148     const-string v10, "bug report receiver dissappeared"
10150     invoke-static {v3, v10, v13}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
10152     goto/16 :goto_79
10154     :catchall_1ba
10155     move-exception v3
10157     :try_start_1bb
10158     monitor-exit p0
10159     :try_end_1bc
10160     .catchall {:try_start_1bb .. :try_end_1bc} :catchall_1ba
10162     throw v3
10163 .end method
10165 .method private createAppErrorReportLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/app/ApplicationErrorReport;
10166     .registers 8
10168     const/4 v0, 0x0
10170     const/4 v2, 0x1
10172     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
10174     if-nez v1, :cond_7
10176     :cond_6
10177     :goto_6
10178     return-object v0
10180     :cond_7
10181     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
10183     if-nez v1, :cond_f
10185     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
10187     if-eqz v1, :cond_6
10189     :cond_f
10190     new-instance v0, Landroid/app/ApplicationErrorReport;
10192     invoke-direct {v0}, Landroid/app/ApplicationErrorReport;-><init>()V
10194     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
10196     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
10198     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->packageName:Ljava/lang/String;
10200     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
10202     invoke-virtual {v1}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
10204     move-result-object v1
10206     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->installerPackageName:Ljava/lang/String;
10208     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
10210     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->processName:Ljava/lang/String;
10212     iput-wide p2, v0, Landroid/app/ApplicationErrorReport;->time:J
10214     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
10216     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
10218     and-int/lit8 v1, v1, 0x1
10220     if-eqz v1, :cond_3c
10222     move v1, v2
10224     :goto_31
10225     iput-boolean v1, v0, Landroid/app/ApplicationErrorReport;->systemApp:Z
10227     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
10229     if-eqz v1, :cond_3e
10231     iput v2, v0, Landroid/app/ApplicationErrorReport;->type:I
10233     iput-object p4, v0, Landroid/app/ApplicationErrorReport;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
10235     goto :goto_6
10237     :cond_3c
10238     const/4 v1, 0x0
10240     goto :goto_31
10242     :cond_3e
10243     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
10245     if-eqz v1, :cond_6
10247     const/4 v1, 0x2
10249     iput v1, v0, Landroid/app/ApplicationErrorReport;->type:I
10251     new-instance v1, Landroid/app/ApplicationErrorReport$AnrInfo;
10253     invoke-direct {v1}, Landroid/app/ApplicationErrorReport$AnrInfo;-><init>()V
10255     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
10257     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
10259     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
10261     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->tag:Ljava/lang/String;
10263     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->activity:Ljava/lang/String;
10265     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
10267     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
10269     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->shortMsg:Ljava/lang/String;
10271     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->cause:Ljava/lang/String;
10273     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
10275     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
10277     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->longMsg:Ljava/lang/String;
10279     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->info:Ljava/lang/String;
10281     goto :goto_6
10282 .end method
10284 .method private dispatchProcessDied(II)V
10285     .registers 6
10287     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10289     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
10291     move-result v0
10293     :cond_6
10294     :goto_6
10295     if-lez v0, :cond_1a
10297     add-int/lit8 v0, v0, -0x1
10299     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10301     invoke-virtual {v2, v0}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
10303     move-result-object v1
10305     check-cast v1, Landroid/app/IProcessObserver;
10307     if-eqz v1, :cond_6
10309     :try_start_14
10310     invoke-interface {v1, p1, p2}, Landroid/app/IProcessObserver;->onProcessDied(II)V
10311     :try_end_17
10312     .catch Landroid/os/RemoteException; {:try_start_14 .. :try_end_17} :catch_18
10314     goto :goto_6
10316     :catch_18
10317     move-exception v2
10319     goto :goto_6
10321     :cond_1a
10322     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10324     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
10326     return-void
10327 .end method
10329 .method private dispatchProcessesChanged()V
10330     .registers 9
10332     monitor-enter p0
10334     :try_start_1
10335     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
10337     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
10339     move-result v0
10341     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
10343     array-length v5, v5
10345     if-ge v5, v0, :cond_10
10347     new-array v5, v0, [Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
10349     iput-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
10351     :cond_10
10352     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
10354     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
10356     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
10358     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
10360     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
10362     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
10364     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
10366     invoke-virtual {v5}, Ljava/util/ArrayList;->clear()V
10368     monitor-exit p0
10369     :try_end_24
10370     .catchall {:try_start_1 .. :try_end_24} :catchall_60
10372     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10374     invoke-virtual {v5}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
10376     move-result v1
10378     :cond_2a
10379     :goto_2a
10380     if-lez v1, :cond_63
10382     add-int/lit8 v1, v1, -0x1
10384     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10386     invoke-virtual {v5, v1}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
10388     move-result-object v4
10390     check-cast v4, Landroid/app/IProcessObserver;
10392     if-eqz v4, :cond_2a
10394     const/4 v3, 0x0
10396     :goto_39
10397     if-ge v3, v0, :cond_2a
10399     :try_start_3b
10400     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
10402     aget-object v2, v5, v3
10404     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
10406     and-int/lit8 v5, v5, 0x1
10408     if-eqz v5, :cond_4e
10410     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
10412     iget v6, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
10414     iget-boolean v7, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->foregroundActivities:Z
10416     invoke-interface {v4, v5, v6, v7}, Landroid/app/IProcessObserver;->onForegroundActivitiesChanged(IIZ)V
10418     :cond_4e
10419     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
10421     and-int/lit8 v5, v5, 0x2
10423     if-eqz v5, :cond_5d
10425     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
10427     iget v6, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
10429     iget v7, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->importance:I
10431     invoke-interface {v4, v5, v6, v7}, Landroid/app/IProcessObserver;->onImportanceChanged(III)V
10432     :try_end_5d
10433     .catch Landroid/os/RemoteException; {:try_start_3b .. :try_end_5d} :catch_69
10435     :cond_5d
10436     add-int/lit8 v3, v3, 0x1
10438     goto :goto_39
10440     :catchall_60
10441     move-exception v5
10443     :try_start_61
10444     monitor-exit p0
10445     :try_end_62
10446     .catchall {:try_start_61 .. :try_end_62} :catchall_60
10448     throw v5
10450     :cond_63
10451     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10453     invoke-virtual {v5}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
10455     return-void
10457     :catch_69
10458     move-exception v5
10460     goto :goto_2a
10461 .end method
10463 .method private dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ActivityRecord;[Ljava/lang/String;Z)V
10464     .registers 13
10466     new-instance v3, Ljava/lang/StringBuilder;
10468     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10470     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10472     move-result-object v3
10474     const-string v4, "  "
10476     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10478     move-result-object v3
10480     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10482     move-result-object v1
10484     monitor-enter p0
10486     :try_start_14
10487     invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10489     const-string v3, "ACTIVITY "
10491     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10493     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
10495     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10497     const-string v3, " "
10499     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10501     invoke-static {p4}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
10503     move-result v3
10505     invoke-static {v3}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
10507     move-result-object v3
10509     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10511     const-string v3, " pid="
10513     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10515     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10517     if-eqz v3, :cond_71
10519     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10521     iget v3, v3, Lcom/android/server/am/ProcessRecord;->pid:I
10523     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(I)V
10525     :goto_41
10526     if-eqz p6, :cond_46
10528     invoke-virtual {p4, p3, v1}, Lcom/android/server/am/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10530     :cond_46
10531     monitor-exit p0
10532     :try_end_47
10533     .catchall {:try_start_14 .. :try_end_47} :catchall_77
10535     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10537     if-eqz v3, :cond_70
10539     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10541     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10543     if-eqz v3, :cond_70
10545     invoke-virtual {p3}, Ljava/io/PrintWriter;->flush()V
10547     :try_start_54
10548     new-instance v2, Lcom/android/server/am/TransferPipe;
10550     invoke-direct {v2}, Lcom/android/server/am/TransferPipe;-><init>()V
10551     :try_end_59
10552     .catch Ljava/io/IOException; {:try_start_54 .. :try_end_59} :catch_7f
10553     .catch Landroid/os/RemoteException; {:try_start_54 .. :try_end_59} :catch_9b
10555     :try_start_59
10556     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10558     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10560     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
10562     move-result-object v4
10564     invoke-virtual {v4}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
10566     move-result-object v4
10568     iget-object v5, p4, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
10570     invoke-interface {v3, v4, v5, v1, p5}, Landroid/app/IApplicationThread;->dumpActivity(Ljava/io/FileDescriptor;Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;)V
10572     invoke-virtual {v2, p2}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
10573     :try_end_6d
10574     .catchall {:try_start_59 .. :try_end_6d} :catchall_7a
10576     :try_start_6d
10577     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
10578     :try_end_70
10579     .catch Ljava/io/IOException; {:try_start_6d .. :try_end_70} :catch_7f
10580     .catch Landroid/os/RemoteException; {:try_start_6d .. :try_end_70} :catch_9b
10582     :cond_70
10583     :goto_70
10584     return-void
10586     :cond_71
10587     :try_start_71
10588     const-string v3, "(not running)"
10590     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10592     goto :goto_41
10594     :catchall_77
10595     move-exception v3
10597     monitor-exit p0
10598     :try_end_79
10599     .catchall {:try_start_71 .. :try_end_79} :catchall_77
10601     throw v3
10603     :catchall_7a
10604     move-exception v3
10606     :try_start_7b
10607     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
10609     throw v3
10610     :try_end_7f
10611     .catch Ljava/io/IOException; {:try_start_7b .. :try_end_7f} :catch_7f
10612     .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_7f} :catch_9b
10614     :catch_7f
10615     move-exception v0
10617     new-instance v3, Ljava/lang/StringBuilder;
10619     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10621     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10623     move-result-object v3
10625     const-string v4, "Failure while dumping the activity: "
10627     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10629     move-result-object v3
10631     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
10633     move-result-object v3
10635     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10637     move-result-object v3
10639     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10641     goto :goto_70
10643     :catch_9b
10644     move-exception v0
10646     new-instance v3, Ljava/lang/StringBuilder;
10648     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10650     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10652     move-result-object v3
10654     const-string v4, "Got a RemoteException while dumping the activity"
10656     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10658     move-result-object v3
10660     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10662     move-result-object v3
10664     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10666     goto :goto_70
10667 .end method
10669 .method private static final dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
10670     .registers 22
10672     const/4 v6, 0x0
10674     const/4 v7, 0x0
10676     new-instance v10, Ljava/lang/StringBuilder;
10678     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10680     move-object/from16 v0, p3
10682     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10684     move-result-object v10
10686     const-string v11, "      "
10688     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10690     move-result-object v10
10692     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10694     move-result-object v5
10696     const/4 v10, 0x0
10698     new-array v1, v10, [Ljava/lang/String;
10700     invoke-interface {p2}, Ljava/util/List;->size()I
10702     move-result v10
10704     add-int/lit8 v4, v10, -0x1
10706     :goto_20
10707     if-ltz v4, :cond_146
10709     invoke-interface {p2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
10711     move-result-object v8
10713     check-cast v8, Lcom/android/server/am/ActivityRecord;
10715     if-eqz p8, :cond_37
10717     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
10719     move-object/from16 v0, p8
10721     invoke-virtual {v0, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
10723     move-result v10
10725     if-nez v10, :cond_37
10727     :cond_34
10728     :goto_34
10729     add-int/lit8 v4, v4, -0x1
10731     goto :goto_20
10733     :cond_37
10734     if-nez p6, :cond_cf
10736     if-nez p5, :cond_41
10738     invoke-virtual {v8}, Lcom/android/server/am/ActivityRecord;->isInHistory()Z
10740     move-result v10
10742     if-nez v10, :cond_cf
10744     :cond_41
10745     const/4 v3, 0x1
10747     :goto_42
10748     if-eqz v7, :cond_4a
10750     const-string v10, " "
10752     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10754     const/4 v7, 0x0
10756     :cond_4a
10757     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
10759     if-eq v6, v10, :cond_79
10761     iget-object v6, v8, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
10763     move-object/from16 v0, p3
10765     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10767     if-eqz v3, :cond_d2
10769     const-string v10, "* "
10771     :goto_59
10772     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10774     invoke-virtual {p1, v6}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10776     if-eqz v3, :cond_d5
10778     new-instance v10, Ljava/lang/StringBuilder;
10780     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10782     move-object/from16 v0, p3
10784     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10786     move-result-object v10
10788     const-string v11, "  "
10790     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10792     move-result-object v10
10794     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10796     move-result-object v10
10798     invoke-virtual {v6, p1, v10}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10800     :cond_79
10801     :goto_79
10802     move-object/from16 v0, p3
10804     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10806     if-eqz v3, :cond_ef
10808     const-string v10, "  * "
10810     :goto_82
10811     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10813     move-object/from16 v0, p4
10815     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10817     const-string v10, " #"
10819     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10821     invoke-virtual {p1, v4}, Ljava/io/PrintWriter;->print(I)V
10823     const-string v10, ": "
10825     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10827     invoke-virtual {p1, v8}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10829     if-eqz v3, :cond_f2
10831     invoke-virtual {v8, p1, v5}, Lcom/android/server/am/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10833     :cond_9f
10834     :goto_9f
10835     if-eqz p7, :cond_34
10837     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10839     if-eqz v10, :cond_34
10841     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10843     iget-object v10, v10, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10845     if-eqz v10, :cond_34
10847     invoke-virtual {p1}, Ljava/io/PrintWriter;->flush()V
10849     :try_start_ae
10850     new-instance v9, Lcom/android/server/am/TransferPipe;
10852     invoke-direct {v9}, Lcom/android/server/am/TransferPipe;-><init>()V
10853     :try_end_b3
10854     .catch Ljava/io/IOException; {:try_start_ae .. :try_end_b3} :catch_112
10855     .catch Landroid/os/RemoteException; {:try_start_ae .. :try_end_b3} :catch_12e
10857     :try_start_b3
10858     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10860     iget-object v10, v10, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10862     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
10864     move-result-object v11
10866     invoke-virtual {v11}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
10868     move-result-object v11
10870     iget-object v12, v8, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
10872     invoke-interface {v10, v11, v12, v5, v1}, Landroid/app/IApplicationThread;->dumpActivity(Ljava/io/FileDescriptor;Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;)V
10874     const-wide/16 v10, 0x7d0
10876     invoke-virtual {v9, p0, v10, v11}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;J)V
10877     :try_end_c9
10878     .catchall {:try_start_b3 .. :try_end_c9} :catchall_10d
10880     :try_start_c9
10881     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->kill()V
10882     :try_end_cc
10883     .catch Ljava/io/IOException; {:try_start_c9 .. :try_end_cc} :catch_112
10884     .catch Landroid/os/RemoteException; {:try_start_c9 .. :try_end_cc} :catch_12e
10886     :goto_cc
10887     const/4 v7, 0x1
10889     goto/16 :goto_34
10891     :cond_cf
10892     const/4 v3, 0x0
10894     goto/16 :goto_42
10896     :cond_d2
10897     const-string v10, "  "
10899     goto :goto_59
10901     :cond_d5
10902     if-eqz p5, :cond_79
10904     iget-object v10, v6, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
10906     if-eqz v10, :cond_79
10908     move-object/from16 v0, p3
10910     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10912     const-string v10, "  "
10914     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10916     iget-object v10, v6, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
10918     invoke-virtual {v10}, Landroid/content/Intent;->toInsecureStringWithClip()Ljava/lang/String;
10920     move-result-object v10
10922     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10924     goto :goto_79
10926     :cond_ef
10927     const-string v10, "    "
10929     goto :goto_82
10931     :cond_f2
10932     if-eqz p5, :cond_9f
10934     invoke-virtual {p1, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10936     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
10938     invoke-virtual {v10}, Landroid/content/Intent;->toInsecureString()Ljava/lang/String;
10940     move-result-object v10
10942     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10944     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10946     if-eqz v10, :cond_9f
10948     invoke-virtual {p1, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10950     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10952     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10954     goto :goto_9f
10956     :catchall_10d
10957     move-exception v10
10959     :try_start_10e
10960     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->kill()V
10962     throw v10
10963     :try_end_112
10964     .catch Ljava/io/IOException; {:try_start_10e .. :try_end_112} :catch_112
10965     .catch Landroid/os/RemoteException; {:try_start_10e .. :try_end_112} :catch_12e
10967     :catch_112
10968     move-exception v2
10970     new-instance v10, Ljava/lang/StringBuilder;
10972     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10974     invoke-virtual {v10, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10976     move-result-object v10
10978     const-string v11, "Failure while dumping the activity: "
10980     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10982     move-result-object v10
10984     invoke-virtual {v10, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
10986     move-result-object v10
10988     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10990     move-result-object v10
10992     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10994     goto :goto_cc
10996     :catch_12e
10997     move-exception v2
10999     new-instance v10, Ljava/lang/StringBuilder;
11001     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
11003     invoke-virtual {v10, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11005     move-result-object v10
11007     const-string v11, "Got a RemoteException while dumping the activity"
11009     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11011     move-result-object v10
11013     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
11015     move-result-object v10
11017     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11019     goto :goto_cc
11021     :cond_146
11022     return-void
11023 .end method
11025 .method static final dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
11026     .registers 12
11027     .annotation system Ldalvik/annotation/Signature;
11028         value = {
11029             "(",
11030             "Ljava/io/PrintWriter;",
11031             "Ljava/lang/String;",
11032             "Ljava/util/ArrayList",
11033             "<",
11034             "Lcom/android/server/am/ActivityManagerService$MemItem;",
11035             ">;Z)V"
11036         }
11037     .end annotation
11039     const/4 v7, 0x1
11041     if-eqz p3, :cond_b
11043     new-instance v2, Lcom/android/server/am/ActivityManagerService$15;
11045     invoke-direct {v2}, Lcom/android/server/am/ActivityManagerService$15;-><init>()V
11047     invoke-static {p2, v2}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
11049     :cond_b
11050     const/4 v0, 0x0
11052     :goto_c
11053     invoke-virtual {p2}, Ljava/util/ArrayList;->size()I
11055     move-result v2
11057     if-ge v0, v2, :cond_4f
11059     invoke-virtual {p2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
11061     move-result-object v1
11063     check-cast v1, Lcom/android/server/am/ActivityManagerService$MemItem;
11065     invoke-virtual {p0, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11067     const-string v2, "%7d kB: "
11069     new-array v3, v7, [Ljava/lang/Object;
11071     const/4 v4, 0x0
11073     iget-wide v5, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
11075     invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
11077     move-result-object v5
11079     aput-object v5, v3, v4
11081     invoke-virtual {p0, v2, v3}, Ljava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;
11083     iget-object v2, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->label:Ljava/lang/String;
11085     invoke-virtual {p0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11087     iget-object v2, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
11089     if-eqz v2, :cond_4c
11091     new-instance v2, Ljava/lang/StringBuilder;
11093     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
11095     invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11097     move-result-object v2
11099     const-string v3, "           "
11101     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
11103     move-result-object v2
11105     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
11107     move-result-object v2
11109     iget-object v3, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
11111     invoke-static {p0, v2, v3, v7}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
11113     :cond_4c
11114     add-int/lit8 v0, v0, 0x1
11116     goto :goto_c
11118     :cond_4f
11119     return-void
11120 .end method
11122 .method private static final dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
11123     .registers 15
11125     const/4 v2, 0x0
11127     invoke-interface {p2}, Ljava/util/List;->size()I
11129     move-result v4
11131     add-int/lit8 v0, v4, -0x1
11133     move v1, v0
11135     :goto_8
11136     if-ltz v1, :cond_4d
11138     invoke-interface {p2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
11140     move-result-object v3
11142     check-cast v3, Lcom/android/server/am/ProcessRecord;
11144     if-eqz p6, :cond_1f
11146     iget-object v4, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
11148     iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
11150     invoke-virtual {p6, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
11152     move-result v4
11154     if-nez v4, :cond_1f
11156     :cond_1c
11157     :goto_1c
11158     add-int/lit8 v1, v1, -0x1
11160     goto :goto_8
11162     :cond_1f
11163     const-string v5, "%s%s #%2d: %s"
11165     const/4 v4, 0x4
11167     new-array v6, v4, [Ljava/lang/Object;
11169     const/4 v4, 0x0
11171     aput-object p3, v6, v4
11173     const/4 v7, 0x1
11175     iget-boolean v4, v3, Lcom/android/server/am/ProcessRecord;->persistent:Z
11177     if-eqz v4, :cond_4b
11179     move-object v4, p5
11181     :goto_2d
11182     aput-object v4, v6, v7
11184     const/4 v4, 0x2
11186     invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11188     move-result-object v7
11190     aput-object v7, v6, v4
11192     const/4 v4, 0x3
11194     invoke-virtual {v3}, Lcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
11196     move-result-object v7
11198     aput-object v7, v6, v4
11200     invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
11202     move-result-object v4
11204     invoke-virtual {p0, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11206     iget-boolean v4, v3, Lcom/android/server/am/ProcessRecord;->persistent:Z
11208     if-eqz v4, :cond_1c
11210     add-int/lit8 v2, v2, 0x1
11212     goto :goto_1c
11214     :cond_4b
11215     move-object v4, p4
11217     goto :goto_2d
11219     :cond_4d
11220     return v2
11221 .end method
11223 .method private static final dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
11224     .registers 36
11225     .annotation system Ldalvik/annotation/Signature;
11226         value = {
11227             "(",
11228             "Ljava/io/PrintWriter;",
11229             "Lcom/android/server/am/ActivityManagerService;",
11230             "Ljava/util/List",
11231             "<",
11232             "Lcom/android/server/am/ProcessRecord;",
11233             ">;",
11234             "Ljava/lang/String;",
11235             "Ljava/lang/String;",
11236             "Ljava/lang/String;",
11237             "Z",
11238             "Ljava/lang/String;",
11239             ")Z"
11240         }
11241     .end annotation
11243     new-instance v10, Ljava/util/ArrayList;
11245     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
11247     move-result v23
11249     move/from16 v0, v23
11251     invoke-direct {v10, v0}, Ljava/util/ArrayList;-><init>(I)V
11253     const/4 v9, 0x0
11255     :goto_c
11256     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
11258     move-result v23
11260     move/from16 v0, v23
11262     if-ge v9, v0, :cond_4a
11264     move-object/from16 v0, p2
11266     invoke-interface {v0, v9}, Ljava/util/List;->get(I)Ljava/lang/Object;
11268     move-result-object v12
11270     check-cast v12, Lcom/android/server/am/ProcessRecord;
11272     if-eqz p7, :cond_35
11274     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
11276     move-object/from16 v23, v0
11278     move-object/from16 v0, v23
11280     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
11282     move-object/from16 v23, v0
11284     move-object/from16 v0, p7
11286     move-object/from16 v1, v23
11288     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
11290     move-result v23
11292     if-nez v23, :cond_35
11294     :goto_32
11295     add-int/lit8 v9, v9, 0x1
11297     goto :goto_c
11299     :cond_35
11300     new-instance v23, Landroid/util/Pair;
11302     move-object/from16 v0, p2
11304     invoke-interface {v0, v9}, Ljava/util/List;->get(I)Ljava/lang/Object;
11306     move-result-object v24
11308     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11310     move-result-object v25
11312     invoke-direct/range {v23 .. v25}, Landroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
11314     move-object/from16 v0, v23
11316     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
11318     goto :goto_32
11320     :cond_4a
11321     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
11323     move-result v23
11325     if-gtz v23, :cond_53
11327     const/16 v23, 0x0
11329     :goto_52
11330     return v23
11332     :cond_53
11333     new-instance v3, Lcom/android/server/am/ActivityManagerService$14;
11335     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$14;-><init>()V
11337     invoke-static {v10, v3}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
11339     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
11341     move-result-wide v4
11343     move-object/from16 v0, p1
11345     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
11347     move-wide/from16 v23, v0
11349     sub-long v13, v4, v23
11351     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
11353     move-result-wide v6
11355     move-object/from16 v0, p1
11357     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
11359     move-wide/from16 v23, v0
11361     sub-long v19, v6, v23
11363     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
11365     move-result v23
11367     add-int/lit8 v9, v23, -0x1
11369     :goto_79
11370     if-ltz v9, :cond_509
11372     invoke-virtual {v10, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
11374     move-result-object v23
11376     check-cast v23, Landroid/util/Pair;
11378     move-object/from16 v0, v23
11380     iget-object v12, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
11382     check-cast v12, Lcom/android/server/am/ProcessRecord;
11384     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11386     move/from16 v23, v0
11388     sget v24, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
11390     move/from16 v0, v23
11392     move/from16 v1, v24
11394     if-lt v0, v1, :cond_370
11396     const-string v23, "bak"
11398     const-string v24, "  "
11400     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11402     move/from16 v25, v0
11404     sget v26, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
11406     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11408     move-result-object v11
11410     :goto_a1
11411     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
11413     move/from16 v23, v0
11415     packed-switch v23, :pswitch_data_50e
11417     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
11419     move/from16 v23, v0
11421     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
11423     move-result-object v15
11425     :goto_b0
11426     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
11428     move/from16 v23, v0
11430     if-eqz v23, :cond_4b0
11432     const-string v8, "A"
11434     :goto_b8
11435     const-string v24, "%s%s #%2d: adj=%s/%s%s trm=%2d %s (%s)"
11437     const/16 v23, 0x9
11439     move/from16 v0, v23
11441     new-array v0, v0, [Ljava/lang/Object;
11443     move-object/from16 v25, v0
11445     const/16 v23, 0x0
11447     aput-object p3, v25, v23
11449     const/16 v26, 0x1
11451     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->persistent:Z
11453     move/from16 v23, v0
11455     if-eqz v23, :cond_4be
11457     move-object/from16 v23, p5
11459     :goto_d0
11460     aput-object v23, v25, v26
11462     const/16 v26, 0x2
11464     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
11466     move-result v23
11468     add-int/lit8 v27, v23, -0x1
11470     invoke-virtual {v10, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
11472     move-result-object v23
11474     check-cast v23, Landroid/util/Pair;
11476     move-object/from16 v0, v23
11478     iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
11480     move-object/from16 v23, v0
11482     check-cast v23, Ljava/lang/Integer;
11484     invoke-virtual/range {v23 .. v23}, Ljava/lang/Integer;->intValue()I
11486     move-result v23
11488     sub-int v23, v27, v23
11490     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11492     move-result-object v23
11494     aput-object v23, v25, v26
11496     const/16 v23, 0x3
11498     aput-object v11, v25, v23
11500     const/16 v23, 0x4
11502     aput-object v15, v25, v23
11504     const/16 v23, 0x5
11506     aput-object v8, v25, v23
11508     const/16 v23, 0x6
11510     iget v0, v12, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
11512     move/from16 v26, v0
11514     invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11516     move-result-object v26
11518     aput-object v26, v25, v23
11520     const/16 v23, 0x7
11522     invoke-virtual {v12}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
11524     move-result-object v26
11526     aput-object v26, v25, v23
11528     const/16 v23, 0x8
11530     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
11532     move-object/from16 v26, v0
11534     aput-object v26, v25, v23
11536     invoke-static/range {v24 .. v25}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
11538     move-result-object v23
11540     move-object/from16 v0, p0
11542     move-object/from16 v1, v23
11544     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11546     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11548     move-object/from16 v23, v0
11550     if-nez v23, :cond_133
11552     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11554     move-object/from16 v23, v0
11556     if-eqz v23, :cond_198
11558     :cond_133
11559     move-object/from16 v0, p0
11561     move-object/from16 v1, p3
11563     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11565     const-string v23, "    "
11567     move-object/from16 v0, p0
11569     move-object/from16 v1, v23
11571     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11573     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11575     move-object/from16 v23, v0
11577     move-object/from16 v0, v23
11579     instance-of v0, v0, Landroid/content/ComponentName;
11581     move/from16 v23, v0
11583     if-eqz v23, :cond_4c2
11585     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11587     move-object/from16 v23, v0
11589     check-cast v23, Landroid/content/ComponentName;
11591     invoke-virtual/range {v23 .. v23}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
11593     move-result-object v23
11595     move-object/from16 v0, p0
11597     move-object/from16 v1, v23
11599     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11601     :goto_160
11602     const-string v23, "<="
11604     move-object/from16 v0, p0
11606     move-object/from16 v1, v23
11608     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11610     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11612     move-object/from16 v23, v0
11614     move-object/from16 v0, v23
11616     instance-of v0, v0, Lcom/android/server/am/ProcessRecord;
11618     move/from16 v23, v0
11620     if-eqz v23, :cond_4e4
11622     const-string v23, "Proc{"
11624     move-object/from16 v0, p0
11626     move-object/from16 v1, v23
11628     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11630     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11632     move-object/from16 v23, v0
11634     check-cast v23, Lcom/android/server/am/ProcessRecord;
11636     invoke-virtual/range {v23 .. v23}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
11638     move-result-object v23
11640     move-object/from16 v0, p0
11642     move-object/from16 v1, v23
11644     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11646     const-string v23, "}"
11648     move-object/from16 v0, p0
11650     move-object/from16 v1, v23
11652     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11654     :cond_198
11655     :goto_198
11656     if-eqz p6, :cond_36c
11658     move-object/from16 v0, p0
11660     move-object/from16 v1, p3
11662     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11664     const-string v23, "    "
11666     move-object/from16 v0, p0
11668     move-object/from16 v1, v23
11670     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11672     const-string v23, "oom: max="
11674     move-object/from16 v0, p0
11676     move-object/from16 v1, v23
11678     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11680     iget v0, v12, Lcom/android/server/am/ProcessRecord;->maxAdj:I
11682     move/from16 v23, v0
11684     move-object/from16 v0, p0
11686     move/from16 v1, v23
11688     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11690     const-string v23, " hidden="
11692     move-object/from16 v0, p0
11694     move-object/from16 v1, v23
11696     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11698     iget v0, v12, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
11700     move/from16 v23, v0
11702     move-object/from16 v0, p0
11704     move/from16 v1, v23
11706     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11708     const-string v23, " curRaw="
11710     move-object/from16 v0, p0
11712     move-object/from16 v1, v23
11714     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11716     iget v0, v12, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
11718     move/from16 v23, v0
11720     move-object/from16 v0, p0
11722     move/from16 v1, v23
11724     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11726     const-string v23, " setRaw="
11728     move-object/from16 v0, p0
11730     move-object/from16 v1, v23
11732     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11734     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
11736     move/from16 v23, v0
11738     move-object/from16 v0, p0
11740     move/from16 v1, v23
11742     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11744     const-string v23, " cur="
11746     move-object/from16 v0, p0
11748     move-object/from16 v1, v23
11750     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11752     iget v0, v12, Lcom/android/server/am/ProcessRecord;->curAdj:I
11754     move/from16 v23, v0
11756     move-object/from16 v0, p0
11758     move/from16 v1, v23
11760     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11762     const-string v23, " set="
11764     move-object/from16 v0, p0
11766     move-object/from16 v1, v23
11768     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11770     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11772     move/from16 v23, v0
11774     move-object/from16 v0, p0
11776     move/from16 v1, v23
11778     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(I)V
11780     move-object/from16 v0, p0
11782     move-object/from16 v1, p3
11784     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11786     const-string v23, "    "
11788     move-object/from16 v0, p0
11790     move-object/from16 v1, v23
11792     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11794     const-string v23, "keeping="
11796     move-object/from16 v0, p0
11798     move-object/from16 v1, v23
11800     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11802     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->keeping:Z
11804     move/from16 v23, v0
11806     move-object/from16 v0, p0
11808     move/from16 v1, v23
11810     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11812     const-string v23, " hidden="
11814     move-object/from16 v0, p0
11816     move-object/from16 v1, v23
11818     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11820     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->hidden:Z
11822     move/from16 v23, v0
11824     move-object/from16 v0, p0
11826     move/from16 v1, v23
11828     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11830     const-string v23, " empty="
11832     move-object/from16 v0, p0
11834     move-object/from16 v1, v23
11836     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11838     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->empty:Z
11840     move/from16 v23, v0
11842     move-object/from16 v0, p0
11844     move/from16 v1, v23
11846     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11848     const-string v23, " hasAboveClient="
11850     move-object/from16 v0, p0
11852     move-object/from16 v1, v23
11854     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11856     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
11858     move/from16 v23, v0
11860     move-object/from16 v0, p0
11862     move/from16 v1, v23
11864     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Z)V
11866     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->keeping:Z
11868     move/from16 v23, v0
11870     if-nez v23, :cond_36c
11872     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
11874     move-wide/from16 v23, v0
11876     const-wide/16 v25, 0x0
11878     cmp-long v23, v23, v25
11880     if-eqz v23, :cond_309
11882     move-object/from16 v0, p1
11884     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
11886     move-object/from16 v23, v0
11888     invoke-virtual/range {v23 .. v23}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
11890     move-result-object v16
11892     monitor-enter v16
11894     :try_start_29d
11895     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
11897     move-object/from16 v23, v0
11899     move-object/from16 v0, v23
11901     iget v0, v0, Landroid/content/pm/ApplicationInfo;->uid:I
11903     move/from16 v23, v0
11905     iget v0, v12, Lcom/android/server/am/ProcessRecord;->pid:I
11907     move/from16 v24, v0
11909     move-object/from16 v0, v16
11911     move/from16 v1, v23
11913     move/from16 v2, v24
11915     invoke-virtual {v0, v1, v2, v4, v5}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
11917     move-result-wide v21
11919     monitor-exit v16
11920     :try_end_2b6
11921     .catchall {:try_start_29d .. :try_end_2b6} :catchall_506
11923     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
11925     move-wide/from16 v23, v0
11927     sub-long v17, v21, v23
11929     move-object/from16 v0, p0
11931     move-object/from16 v1, p3
11933     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11935     const-string v23, "    "
11937     move-object/from16 v0, p0
11939     move-object/from16 v1, v23
11941     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11943     const-string v23, "keep awake over "
11945     move-object/from16 v0, p0
11947     move-object/from16 v1, v23
11949     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11951     move-object/from16 v0, p0
11953     invoke-static {v13, v14, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11955     const-string v23, " used "
11957     move-object/from16 v0, p0
11959     move-object/from16 v1, v23
11961     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11963     move-wide/from16 v0, v17
11965     move-object/from16 v2, p0
11967     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11969     const-string v23, " ("
11971     move-object/from16 v0, p0
11973     move-object/from16 v1, v23
11975     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11977     const-wide/16 v23, 0x64
11979     mul-long v23, v23, v17
11981     div-long v23, v23, v13
11983     move-object/from16 v0, p0
11985     move-wide/from16 v1, v23
11987     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
11989     const-string v23, "%)"
11991     move-object/from16 v0, p0
11993     move-object/from16 v1, v23
11995     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11997     :cond_309
11998     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
12000     move-wide/from16 v23, v0
12002     const-wide/16 v25, 0x0
12004     cmp-long v23, v23, v25
12006     if-eqz v23, :cond_36c
12008     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
12010     move-wide/from16 v23, v0
12012     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
12014     move-wide/from16 v25, v0
12016     sub-long v17, v23, v25
12018     move-object/from16 v0, p0
12020     move-object/from16 v1, p3
12022     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12024     const-string v23, "    "
12026     move-object/from16 v0, p0
12028     move-object/from16 v1, v23
12030     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12032     const-string v23, "run cpu over "
12034     move-object/from16 v0, p0
12036     move-object/from16 v1, v23
12038     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12040     move-wide/from16 v0, v19
12042     move-object/from16 v2, p0
12044     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
12046     const-string v23, " used "
12048     move-object/from16 v0, p0
12050     move-object/from16 v1, v23
12052     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12054     move-wide/from16 v0, v17
12056     move-object/from16 v2, p0
12058     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
12060     const-string v23, " ("
12062     move-object/from16 v0, p0
12064     move-object/from16 v1, v23
12066     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12068     const-wide/16 v23, 0x64
12070     mul-long v23, v23, v17
12072     div-long v23, v23, v19
12074     move-object/from16 v0, p0
12076     move-wide/from16 v1, v23
12078     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
12080     const-string v23, "%)"
12082     move-object/from16 v0, p0
12084     move-object/from16 v1, v23
12086     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12088     :cond_36c
12089     add-int/lit8 v9, v9, -0x1
12091     goto/16 :goto_79
12093     :cond_370
12094     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12096     move/from16 v23, v0
12098     const/16 v24, 0x8
12100     move/from16 v0, v23
12102     move/from16 v1, v24
12104     if-lt v0, v1, :cond_38c
12106     const-string v23, "svcb "
12108     const/16 v24, 0x0
12110     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12112     move/from16 v25, v0
12114     const/16 v26, 0x8
12116     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12118     move-result-object v11
12120     goto/16 :goto_a1
12122     :cond_38c
12123     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12125     move/from16 v23, v0
12127     const/16 v24, 0x7
12129     move/from16 v0, v23
12131     move/from16 v1, v24
12133     if-lt v0, v1, :cond_3a8
12135     const-string v23, "prev "
12137     const/16 v24, 0x0
12139     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12141     move/from16 v25, v0
12143     const/16 v26, 0x7
12145     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12147     move-result-object v11
12149     goto/16 :goto_a1
12151     :cond_3a8
12152     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12154     move/from16 v23, v0
12156     const/16 v24, 0x6
12158     move/from16 v0, v23
12160     move/from16 v1, v24
12162     if-lt v0, v1, :cond_3c4
12164     const-string v23, "home "
12166     const/16 v24, 0x0
12168     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12170     move/from16 v25, v0
12172     const/16 v26, 0x6
12174     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12176     move-result-object v11
12178     goto/16 :goto_a1
12180     :cond_3c4
12181     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12183     move/from16 v23, v0
12185     const/16 v24, 0x5
12187     move/from16 v0, v23
12189     move/from16 v1, v24
12191     if-lt v0, v1, :cond_3e0
12193     const-string v23, "svc  "
12195     const/16 v24, 0x0
12197     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12199     move/from16 v25, v0
12201     const/16 v26, 0x5
12203     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12205     move-result-object v11
12207     goto/16 :goto_a1
12209     :cond_3e0
12210     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12212     move/from16 v23, v0
12214     const/16 v24, 0x4
12216     move/from16 v0, v23
12218     move/from16 v1, v24
12220     if-lt v0, v1, :cond_3fc
12222     const-string v23, "bkup "
12224     const/16 v24, 0x0
12226     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12228     move/from16 v25, v0
12230     const/16 v26, 0x4
12232     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12234     move-result-object v11
12236     goto/16 :goto_a1
12238     :cond_3fc
12239     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12241     move/from16 v23, v0
12243     const/16 v24, 0x3
12245     move/from16 v0, v23
12247     move/from16 v1, v24
12249     if-lt v0, v1, :cond_418
12251     const-string v23, "hvy  "
12253     const/16 v24, 0x0
12255     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12257     move/from16 v25, v0
12259     const/16 v26, 0x3
12261     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12263     move-result-object v11
12265     goto/16 :goto_a1
12267     :cond_418
12268     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12270     move/from16 v23, v0
12272     const/16 v24, 0x2
12274     move/from16 v0, v23
12276     move/from16 v1, v24
12278     if-lt v0, v1, :cond_434
12280     const-string v23, "prcp "
12282     const/16 v24, 0x0
12284     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12286     move/from16 v25, v0
12288     const/16 v26, 0x2
12290     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12292     move-result-object v11
12294     goto/16 :goto_a1
12296     :cond_434
12297     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12299     move/from16 v23, v0
12301     const/16 v24, 0x1
12303     move/from16 v0, v23
12305     move/from16 v1, v24
12307     if-lt v0, v1, :cond_450
12309     const-string v23, "vis  "
12311     const/16 v24, 0x0
12313     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12315     move/from16 v25, v0
12317     const/16 v26, 0x1
12319     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12321     move-result-object v11
12323     goto/16 :goto_a1
12325     :cond_450
12326     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12328     move/from16 v23, v0
12330     if-ltz v23, :cond_466
12332     const-string v23, "fore "
12334     const/16 v24, 0x0
12336     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12338     move/from16 v25, v0
12340     const/16 v26, 0x0
12342     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12344     move-result-object v11
12346     goto/16 :goto_a1
12348     :cond_466
12349     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12351     move/from16 v23, v0
12353     const/16 v24, -0xc
12355     move/from16 v0, v23
12357     move/from16 v1, v24
12359     if-lt v0, v1, :cond_482
12361     const-string v23, "pers "
12363     const/16 v24, 0x0
12365     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12367     move/from16 v25, v0
12369     const/16 v26, -0xc
12371     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12373     move-result-object v11
12375     goto/16 :goto_a1
12377     :cond_482
12378     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12380     move/from16 v23, v0
12382     const/16 v24, -0x10
12384     move/from16 v0, v23
12386     move/from16 v1, v24
12388     if-lt v0, v1, :cond_49e
12390     const-string v23, "sys  "
12392     const/16 v24, 0x0
12394     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12396     move/from16 v25, v0
12398     const/16 v26, -0x10
12400     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12402     move-result-object v11
12404     goto/16 :goto_a1
12406     :cond_49e
12407     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12409     move/from16 v23, v0
12411     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
12413     move-result-object v11
12415     goto/16 :goto_a1
12417     :pswitch_4a8
12418     const-string v15, "B"
12420     goto/16 :goto_b0
12422     :pswitch_4ac
12423     const-string v15, "F"
12425     goto/16 :goto_b0
12427     :cond_4b0
12428     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
12430     move/from16 v23, v0
12432     if-eqz v23, :cond_4ba
12434     const-string v8, "S"
12436     goto/16 :goto_b8
12438     :cond_4ba
12439     const-string v8, " "
12441     goto/16 :goto_b8
12443     :cond_4be
12444     move-object/from16 v23, p4
12446     goto/16 :goto_d0
12448     :cond_4c2
12449     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
12451     move-object/from16 v23, v0
12453     if-eqz v23, :cond_4d9
12455     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
12457     move-object/from16 v23, v0
12459     invoke-virtual/range {v23 .. v23}, Ljava/lang/Object;->toString()Ljava/lang/String;
12461     move-result-object v23
12463     move-object/from16 v0, p0
12465     move-object/from16 v1, v23
12467     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12469     goto/16 :goto_160
12471     :cond_4d9
12472     const-string v23, "{null}"
12474     move-object/from16 v0, p0
12476     move-object/from16 v1, v23
12478     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12480     goto/16 :goto_160
12482     :cond_4e4
12483     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
12485     move-object/from16 v23, v0
12487     if-eqz v23, :cond_4fb
12489     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
12491     move-object/from16 v23, v0
12493     invoke-virtual/range {v23 .. v23}, Ljava/lang/Object;->toString()Ljava/lang/String;
12495     move-result-object v23
12497     move-object/from16 v0, p0
12499     move-object/from16 v1, v23
12501     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12503     goto/16 :goto_198
12505     :cond_4fb
12506     const-string v23, "{null}"
12508     move-object/from16 v0, p0
12510     move-object/from16 v1, v23
12512     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12514     goto/16 :goto_198
12516     :catchall_506
12517     move-exception v23
12519     :try_start_507
12520     monitor-exit v16
12521     :try_end_508
12522     .catchall {:try_start_507 .. :try_end_508} :catchall_506
12524     throw v23
12526     :cond_509
12527     const/16 v23, 0x1
12529     goto/16 :goto_52
12531     nop
12533     :pswitch_data_50e
12534     .packed-switch -0x1
12535         :pswitch_4ac
12536         :pswitch_4a8
12537     .end packed-switch
12538 .end method
12540 .method private dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
12541     .registers 12
12543     new-instance v3, Ljava/lang/StringBuilder;
12545     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
12547     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12549     move-result-object v3
12551     const-string v4, "  "
12553     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12555     move-result-object v3
12557     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12559     move-result-object v1
12561     monitor-enter p0
12563     :try_start_14
12564     invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12566     const-string v3, "SERVICE "
12568     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12570     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
12572     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12574     const-string v3, " "
12576     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12578     invoke-static {p4}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
12580     move-result v3
12582     invoke-static {v3}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
12584     move-result-object v3
12586     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12588     const-string v3, " pid="
12590     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12592     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
12594     if-eqz v3, :cond_8d
12596     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
12598     iget v3, v3, Lcom/android/server/am/ProcessRecord;->pid:I
12600     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(I)V
12602     :goto_41
12603     if-eqz p6, :cond_46
12605     invoke-virtual {p4, p3, v1}, Lcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
12607     :cond_46
12608     monitor-exit p0
12609     :try_end_47
12610     .catchall {:try_start_14 .. :try_end_47} :catchall_93
12612     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
12614     if-eqz v3, :cond_8c
12616     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
12618     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
12620     if-eqz v3, :cond_8c
12622     invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12624     const-string v3, "  Client:"
12626     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12628     invoke-virtual {p3}, Ljava/io/PrintWriter;->flush()V
12630     :try_start_5c
12631     new-instance v2, Lcom/android/server/am/TransferPipe;
12633     invoke-direct {v2}, Lcom/android/server/am/TransferPipe;-><init>()V
12634     :try_end_61
12635     .catch Ljava/io/IOException; {:try_start_5c .. :try_end_61} :catch_9b
12636     .catch Landroid/os/RemoteException; {:try_start_5c .. :try_end_61} :catch_b7
12638     :try_start_61
12639     iget-object v3, p4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
12641     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
12643     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
12645     move-result-object v4
12647     invoke-virtual {v4}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
12649     move-result-object v4
12651     invoke-interface {v3, v4, p4, p5}, Landroid/app/IApplicationThread;->dumpService(Ljava/io/FileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V
12653     new-instance v3, Ljava/lang/StringBuilder;
12655     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
12657     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12659     move-result-object v3
12661     const-string v4, "    "
12663     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12665     move-result-object v3
12667     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12669     move-result-object v3
12671     invoke-virtual {v2, v3}, Lcom/android/server/am/TransferPipe;->setBufferPrefix(Ljava/lang/String;)V
12673     invoke-virtual {v2, p2}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
12674     :try_end_89
12675     .catchall {:try_start_61 .. :try_end_89} :catchall_96
12677     :try_start_89
12678     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
12679     :try_end_8c
12680     .catch Ljava/io/IOException; {:try_start_89 .. :try_end_8c} :catch_9b
12681     .catch Landroid/os/RemoteException; {:try_start_89 .. :try_end_8c} :catch_b7
12683     :cond_8c
12684     :goto_8c
12685     return-void
12687     :cond_8d
12688     :try_start_8d
12689     const-string v3, "(not running)"
12691     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12693     goto :goto_41
12695     :catchall_93
12696     move-exception v3
12698     monitor-exit p0
12699     :try_end_95
12700     .catchall {:try_start_8d .. :try_end_95} :catchall_93
12702     throw v3
12704     :catchall_96
12705     move-exception v3
12707     :try_start_97
12708     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
12710     throw v3
12711     :try_end_9b
12712     .catch Ljava/io/IOException; {:try_start_97 .. :try_end_9b} :catch_9b
12713     .catch Landroid/os/RemoteException; {:try_start_97 .. :try_end_9b} :catch_b7
12715     :catch_9b
12716     move-exception v0
12718     new-instance v3, Ljava/lang/StringBuilder;
12720     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
12722     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12724     move-result-object v3
12726     const-string v4, "    Failure while dumping the service: "
12728     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12730     move-result-object v3
12732     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
12734     move-result-object v3
12736     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12738     move-result-object v3
12740     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12742     goto :goto_8c
12744     :catch_b7
12745     move-exception v0
12747     new-instance v3, Ljava/lang/StringBuilder;
12749     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
12751     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12753     move-result-object v3
12755     const-string v4, "    Got a RemoteException while dumping the service"
12757     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12759     move-result-object v3
12761     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12763     move-result-object v3
12765     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12767     goto :goto_8c
12768 .end method
12770 .method public static dumpStackTraces(ZLjava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)Ljava/io/File;
12771     .registers 14
12772     .annotation system Ldalvik/annotation/Signature;
12773         value = {
12774             "(Z",
12775             "Ljava/util/ArrayList",
12776             "<",
12777             "Ljava/lang/Integer;",
12778             ">;",
12779             "Lcom/android/internal/os/ProcessStats;",
12780             "Landroid/util/SparseArray",
12781             "<",
12782             "Ljava/lang/Boolean;",
12783             ">;[",
12784             "Ljava/lang/String;",
12785             ")",
12786             "Ljava/io/File;"
12787         }
12788     .end annotation
12790     const/4 v4, 0x0
12792     const-string v5, "dalvik.vm.stack-trace-file"
12794     invoke-static {v5, v4}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
12796     move-result-object v3
12798     if-eqz v3, :cond_f
12800     invoke-virtual {v3}, Ljava/lang/String;->length()I
12802     move-result v5
12804     if-nez v5, :cond_11
12806     :cond_f
12807     move-object v2, v4
12809     :goto_10
12810     return-object v2
12812     :cond_11
12813     new-instance v2, Ljava/io/File;
12815     invoke-direct {v2, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
12817     :try_start_16
12818     invoke-virtual {v2}, Ljava/io/File;->getParentFile()Ljava/io/File;
12820     move-result-object v1
12822     invoke-virtual {v1}, Ljava/io/File;->exists()Z
12824     move-result v5
12826     if-nez v5, :cond_23
12828     invoke-virtual {v2}, Ljava/io/File;->mkdirs()Z
12830     :cond_23
12831     invoke-virtual {v1}, Ljava/io/File;->getPath()Ljava/lang/String;
12833     move-result-object v5
12835     const/16 v6, 0x1fd
12837     const/4 v7, -0x1
12839     const/4 v8, -0x1
12841     invoke-static {v5, v6, v7, v8}, Landroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I
12843     if-eqz p0, :cond_39
12845     invoke-virtual {v2}, Ljava/io/File;->exists()Z
12847     move-result v5
12849     if-eqz v5, :cond_39
12851     invoke-virtual {v2}, Ljava/io/File;->delete()Z
12853     :cond_39
12854     invoke-virtual {v2}, Ljava/io/File;->createNewFile()Z
12856     invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String;
12858     move-result-object v5
12860     const/16 v6, 0x1b6
12862     const/4 v7, -0x1
12864     const/4 v8, -0x1
12866     invoke-static {v5, v6, v7, v8}, Landroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I
12867     :try_end_47
12868     .catch Ljava/io/IOException; {:try_start_16 .. :try_end_47} :catch_4b
12870     invoke-static {v3, p1, p2, p3, p4}, Lcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)V
12872     goto :goto_10
12874     :catch_4b
12875     move-exception v0
12877     const-string v5, "ActivityManager"
12879     new-instance v6, Ljava/lang/StringBuilder;
12881     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
12883     const-string v7, "Unable to prepare ANR traces file: "
12885     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12887     move-result-object v6
12889     invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12891     move-result-object v6
12893     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12895     move-result-object v6
12897     invoke-static {v5, v6, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
12899     move-object v2, v4
12901     goto :goto_10
12902 .end method
12904 .method private static dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)V
12905     .registers 20
12906     .annotation system Ldalvik/annotation/Signature;
12907         value = {
12908             "(",
12909             "Ljava/lang/String;",
12910             "Ljava/util/ArrayList",
12911             "<",
12912             "Ljava/lang/Integer;",
12913             ">;",
12914             "Lcom/android/internal/os/ProcessStats;",
12915             "Landroid/util/SparseArray",
12916             "<",
12917             "Ljava/lang/Boolean;",
12918             ">;[",
12919             "Ljava/lang/String;",
12920             ")V"
12921         }
12922     .end annotation
12924     new-instance v9, Lcom/android/server/am/ActivityManagerService$4;
12926     const/16 v13, 0x8
12928     invoke-direct {v9, p0, v13}, Lcom/android/server/am/ActivityManagerService$4;-><init>(Ljava/lang/String;I)V
12930     :try_start_7
12931     invoke-virtual {v9}, Landroid/os/FileObserver;->startWatching()V
12932     :try_end_a
12933     .catchall {:try_start_7 .. :try_end_a} :catchall_89
12935     if-eqz p1, :cond_36
12937     :try_start_c
12938     invoke-virtual/range {p1 .. p1}, Ljava/util/ArrayList;->size()I
12940     move-result v7
12942     const/4 v4, 0x0
12944     :goto_11
12945     if-ge v4, v7, :cond_36
12947     monitor-enter v9
12948     :try_end_14
12949     .catchall {:try_start_c .. :try_end_14} :catchall_89
12950     .catch Ljava/lang/InterruptedException; {:try_start_c .. :try_end_14} :catch_30
12952     :try_start_14
12953     move-object/from16 v0, p1
12955     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12957     move-result-object v13
12959     check-cast v13, Ljava/lang/Integer;
12961     invoke-virtual {v13}, Ljava/lang/Integer;->intValue()I
12963     move-result v13
12965     const/4 v14, 0x3
12967     invoke-static {v13, v14}, Landroid/os/Process;->sendSignal(II)V
12969     const-wide/16 v13, 0xc8
12971     invoke-virtual {v9, v13, v14}, Ljava/lang/Object;->wait(J)V
12973     monitor-exit v9
12975     add-int/lit8 v4, v4, 0x1
12977     goto :goto_11
12979     :catchall_2d
12980     move-exception v13
12982     monitor-exit v9
12983     :try_end_2f
12984     .catchall {:try_start_14 .. :try_end_2f} :catchall_2d
12986     :try_start_2f
12987     throw v13
12988     :try_end_30
12989     .catchall {:try_start_2f .. :try_end_30} :catchall_89
12990     .catch Ljava/lang/InterruptedException; {:try_start_2f .. :try_end_30} :catch_30
12992     :catch_30
12993     move-exception v3
12995     :try_start_31
12996     const-string v13, "ActivityManager"
12998     invoke-static {v13, v3}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/Throwable;)I
13000     :cond_36
13001     if-eqz p2, :cond_8e
13003     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->init()V
13005     invoke-static {}, Ljava/lang/System;->gc()V
13007     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->update()V
13008     :try_end_41
13009     .catchall {:try_start_31 .. :try_end_41} :catchall_89
13011     :try_start_41
13012     monitor-enter p2
13013     :try_end_42
13014     .catchall {:try_start_41 .. :try_end_42} :catchall_89
13015     .catch Ljava/lang/InterruptedException; {:try_start_41 .. :try_end_42} :catch_7d
13017     const-wide/16 v13, 0x1f4
13019     :try_start_44
13020     move-object/from16 v0, p2
13022     invoke-virtual {v0, v13, v14}, Ljava/lang/Object;->wait(J)V
13024     monitor-exit p2
13025     :try_end_4a
13026     .catchall {:try_start_44 .. :try_end_4a} :catchall_7a
13028     :goto_4a
13029     :try_start_4a
13030     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->update()V
13032     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->countWorkingStats()I
13034     move-result v1
13036     const/4 v8, 0x0
13038     const/4 v4, 0x0
13040     :goto_53
13041     if-ge v4, v1, :cond_8e
13043     const/4 v13, 0x5
13045     if-ge v8, v13, :cond_8e
13047     move-object/from16 v0, p2
13049     invoke-virtual {v0, v4}, Lcom/android/internal/os/ProcessStats;->getWorkingStats(I)Lcom/android/internal/os/ProcessStats$Stats;
13051     move-result-object v12
13053     iget v13, v12, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
13055     move-object/from16 v0, p3
13057     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->indexOfKey(I)I
13058     :try_end_65
13059     .catchall {:try_start_4a .. :try_end_65} :catchall_89
13061     move-result v13
13063     if-ltz v13, :cond_77
13065     add-int/lit8 v8, v8, 0x1
13067     :try_start_6a
13068     monitor-enter v9
13069     :try_end_6b
13070     .catchall {:try_start_6a .. :try_end_6b} :catchall_89
13071     .catch Ljava/lang/InterruptedException; {:try_start_6a .. :try_end_6b} :catch_82
13073     :try_start_6b
13074     iget v13, v12, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
13076     const/4 v14, 0x3
13078     invoke-static {v13, v14}, Landroid/os/Process;->sendSignal(II)V
13080     const-wide/16 v13, 0xc8
13082     invoke-virtual {v9, v13, v14}, Ljava/lang/Object;->wait(J)V
13084     monitor-exit v9
13085     :try_end_77
13086     .catchall {:try_start_6b .. :try_end_77} :catchall_7f
13088     :cond_77
13089     :goto_77
13090     add-int/lit8 v4, v4, 0x1
13092     goto :goto_53
13094     :catchall_7a
13095     move-exception v13
13097     :try_start_7b
13098     monitor-exit p2
13099     :try_end_7c
13100     .catchall {:try_start_7b .. :try_end_7c} :catchall_7a
13102     :try_start_7c
13103     throw v13
13104     :try_end_7d
13105     .catchall {:try_start_7c .. :try_end_7d} :catchall_89
13106     .catch Ljava/lang/InterruptedException; {:try_start_7c .. :try_end_7d} :catch_7d
13108     :catch_7d
13109     move-exception v13
13111     goto :goto_4a
13113     :catchall_7f
13114     move-exception v13
13116     :try_start_80
13117     monitor-exit v9
13118     :try_end_81
13119     .catchall {:try_start_80 .. :try_end_81} :catchall_7f
13121     :try_start_81
13122     throw v13
13123     :try_end_82
13124     .catchall {:try_start_81 .. :try_end_82} :catchall_89
13125     .catch Ljava/lang/InterruptedException; {:try_start_81 .. :try_end_82} :catch_82
13127     :catch_82
13128     move-exception v3
13130     :try_start_83
13131     const-string v13, "ActivityManager"
13133     invoke-static {v13, v3}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/Throwable;)I
13134     :try_end_88
13135     .catchall {:try_start_83 .. :try_end_88} :catchall_89
13137     goto :goto_77
13139     :catchall_89
13140     move-exception v13
13142     invoke-virtual {v9}, Landroid/os/FileObserver;->stopWatching()V
13144     throw v13
13146     :cond_8e
13147     invoke-virtual {v9}, Landroid/os/FileObserver;->stopWatching()V
13149     if-eqz p4, :cond_a6
13151     invoke-static/range {p4 .. p4}, Landroid/os/Process;->getPidsForCommands([Ljava/lang/String;)[I
13153     move-result-object v11
13155     if-eqz v11, :cond_a6
13157     move-object v2, v11
13159     array-length v6, v2
13161     const/4 v5, 0x0
13163     :goto_9c
13164     if-ge v5, v6, :cond_a6
13166     aget v10, v2, v5
13168     invoke-static {v10, p0}, Landroid/os/Debug;->dumpNativeBacktraceToFile(ILjava/lang/String;)V
13170     add-int/lit8 v5, v5, 0x1
13172     goto :goto_9c
13174     :cond_a6
13175     return-void
13176 .end method
13178 .method private fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
13179     .registers 5
13181     iget v1, p1, Lcom/android/server/am/ProcessRecord;->pid:I
13183     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->pid:I
13185     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
13187     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
13189     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->uid:I
13191     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
13193     if-ne v1, p1, :cond_14
13195     iget v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
13197     or-int/lit8 v1, v1, 0x1
13199     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
13201     :cond_14
13202     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->persistent:Z
13204     if-eqz v1, :cond_1e
13206     iget v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
13208     or-int/lit8 v1, v1, 0x2
13210     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
13212     :cond_1e
13213     iget v1, p1, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
13215     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->lastTrimLevel:I
13217     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
13219     invoke-static {v0, p2}, Lcom/android/server/am/ActivityManagerService;->oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
13221     move-result v1
13223     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I
13225     iget v1, p1, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
13227     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonCode:I
13229     return-void
13230 .end method
13232 .method private final findAffinityTaskTopLocked(ILjava/lang/String;)I
13233     .registers 10
13235     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13237     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13239     invoke-virtual {v5, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13241     move-result-object v5
13243     check-cast v5, Lcom/android/server/am/ActivityRecord;
13245     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13247     move-object v2, v4
13249     add-int/lit8 v1, p1, -0x1
13251     :goto_f
13252     if-ltz v1, :cond_2e
13254     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13256     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13258     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13260     move-result-object v3
13262     check-cast v3, Lcom/android/server/am/ActivityRecord;
13264     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13266     if-eq v5, v2, :cond_2b
13268     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13270     iget-object v5, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
13272     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
13274     move-result v5
13276     if-eqz v5, :cond_2b
13278     move v5, v1
13280     :goto_2a
13281     return v5
13283     :cond_2b
13284     add-int/lit8 v1, v1, -0x1
13286     goto :goto_f
13288     :cond_2e
13289     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13291     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13293     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
13295     move-result v0
13297     move-object v2, v4
13299     add-int/lit8 v1, p1, 0x1
13301     :goto_39
13302     if-ge v1, v0, :cond_58
13304     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13306     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13308     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13310     move-result-object v3
13312     check-cast v3, Lcom/android/server/am/ActivityRecord;
13314     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13316     if-eq v5, v2, :cond_55
13318     iget-object v5, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
13320     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
13322     move-result v5
13324     if-eqz v5, :cond_53
13326     move v5, v1
13328     goto :goto_2a
13330     :cond_53
13331     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13333     :cond_55
13334     add-int/lit8 v1, v1, 0x1
13336     goto :goto_39
13338     :cond_58
13339     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13341     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13343     add-int/lit8 v6, v0, -0x1
13345     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13347     move-result-object v5
13349     check-cast v5, Lcom/android/server/am/ActivityRecord;
13351     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13353     iget-object v5, v5, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
13355     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
13357     move-result v5
13359     if-eqz v5, :cond_71
13361     add-int/lit8 v5, v0, -0x1
13363     goto :goto_2a
13365     :cond_71
13366     const/4 v5, -0x1
13368     goto :goto_2a
13369 .end method
13371 .method private findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
13372     .registers 12
13374     const/4 v5, 0x0
13376     if-nez p1, :cond_5
13378     move-object v4, v5
13380     :goto_4
13381     return-object v4
13383     :cond_5
13384     monitor-enter p0
13386     :try_start_6
13387     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
13389     invoke-virtual {v6}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
13391     move-result-object v6
13393     invoke-virtual {v6}, Ljava/util/HashMap;->values()Ljava/util/Collection;
13395     move-result-object v6
13397     invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
13399     move-result-object v2
13401     :cond_14
13402     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
13404     move-result v6
13406     if-eqz v6, :cond_41
13408     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
13410     move-result-object v1
13412     check-cast v1, Landroid/util/SparseArray;
13414     invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
13416     move-result v0
13418     const/4 v3, 0x0
13420     :goto_25
13421     if-ge v3, v0, :cond_14
13423     invoke-virtual {v1, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
13425     move-result-object v4
13427     check-cast v4, Lcom/android/server/am/ProcessRecord;
13429     iget-object v6, v4, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
13431     if-eqz v6, :cond_3e
13433     iget-object v6, v4, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
13435     invoke-interface {v6}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
13437     move-result-object v6
13439     if-ne v6, p1, :cond_3e
13441     monitor-exit p0
13443     goto :goto_4
13445     :catchall_3b
13446     move-exception v5
13448     monitor-exit p0
13449     :try_end_3d
13450     .catchall {:try_start_6 .. :try_end_3d} :catchall_3b
13452     throw v5
13454     :cond_3e
13455     add-int/lit8 v3, v3, 0x1
13457     goto :goto_25
13459     :cond_41
13460     :try_start_41
13461     const-string v6, "ActivityManager"
13463     new-instance v7, Ljava/lang/StringBuilder;
13465     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
13467     const-string v8, "Can\'t find mystery application for "
13469     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13471     move-result-object v7
13473     invoke-virtual {v7, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13475     move-result-object v7
13477     const-string v8, " from pid="
13479     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13481     move-result-object v7
13483     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
13485     move-result v8
13487     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13489     move-result-object v7
13491     const-string v8, " uid="
13493     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13495     move-result-object v7
13497     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
13499     move-result v8
13501     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13503     move-result-object v7
13505     const-string v8, ": "
13507     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13509     move-result-object v7
13511     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13513     move-result-object v7
13515     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13517     move-result-object v7
13519     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13521     monitor-exit p0
13522     :try_end_80
13523     .catchall {:try_start_41 .. :try_end_80} :catchall_3b
13525     move-object v4, v5
13527     goto :goto_4
13528 .end method
13530 .method private findServiceLocked(Landroid/content/Intent;Ljava/lang/String;I)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
13531     .registers 16
13533     const/4 v11, 0x0
13535     const/4 v8, 0x0
13537     invoke-virtual {p1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
13539     move-result-object v0
13541     if-eqz v0, :cond_12
13543     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
13545     invoke-virtual {p1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
13547     move-result-object v1
13549     invoke-virtual {v0, v1, p3}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
13551     move-result-object v8
13553     :cond_12
13554     if-nez v8, :cond_1f
13556     new-instance v6, Landroid/content/Intent$FilterComparison;
13558     invoke-direct {v6, p1}, Landroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
13560     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
13562     invoke-virtual {v0, v6, p3}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByIntent(Landroid/content/Intent$FilterComparison;I)Lcom/android/server/am/ServiceRecord;
13564     move-result-object v8
13566     :cond_1f
13567     if-nez v8, :cond_49
13569     :try_start_21
13570     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
13572     move-result-object v0
13574     const/4 v1, 0x0
13576     invoke-interface {v0, p1, p2, v1, p3}, Landroid/content/pm/IPackageManager;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
13578     move-result-object v9
13580     if-eqz v9, :cond_32
13582     iget-object v10, v9, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
13584     :goto_2e
13585     if-nez v10, :cond_34
13587     move-object v0, v11
13589     :goto_31
13590     return-object v0
13592     :cond_32
13593     move-object v10, v11
13595     goto :goto_2e
13597     :cond_34
13598     new-instance v7, Landroid/content/ComponentName;
13600     iget-object v0, v10, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
13602     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
13604     iget-object v1, v10, Landroid/content/pm/ServiceInfo;->name:Ljava/lang/String;
13606     invoke-direct {v7, v0, v1}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
13608     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
13610     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
13612     move-result v1
13614     invoke-virtual {v0, v7, v1}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
13615     :try_end_48
13616     .catch Landroid/os/RemoteException; {:try_start_21 .. :try_end_48} :catch_10d
13618     move-result-object v8
13620     :cond_49
13621     :goto_49
13622     if-eqz v8, :cond_10a
13624     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
13626     move-result v2
13628     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
13630     move-result v3
13632     iget-object v1, v8, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
13634     iget-object v0, v8, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
13636     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
13638     iget-boolean v5, v8, Lcom/android/server/am/ServiceRecord;->exported:Z
13640     move-object v0, p0
13642     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
13644     move-result v0
13646     if-eqz v0, :cond_103
13648     iget-boolean v0, v8, Lcom/android/server/am/ServiceRecord;->exported:Z
13650     if-nez v0, :cond_c0
13652     const-string v0, "ActivityManager"
13654     new-instance v1, Ljava/lang/StringBuilder;
13656     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13658     const-string v4, "Permission Denial: Accessing service "
13660     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13662     move-result-object v1
13664     iget-object v4, v8, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
13666     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13668     move-result-object v1
13670     const-string v4, " from pid="
13672     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13674     move-result-object v1
13676     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13678     move-result-object v1
13680     const-string v4, ", uid="
13682     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13684     move-result-object v1
13686     invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13688     move-result-object v1
13690     const-string v4, " that is not exported from uid "
13692     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13694     move-result-object v1
13696     iget-object v4, v8, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
13698     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
13700     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13702     move-result-object v1
13704     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13706     move-result-object v1
13708     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13710     new-instance v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
13712     new-instance v1, Ljava/lang/StringBuilder;
13714     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13716     const-string v4, "not exported from uid "
13718     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13720     move-result-object v1
13722     iget-object v4, v8, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
13724     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
13726     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13728     move-result-object v1
13730     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13732     move-result-object v1
13734     invoke-direct {v0, p0, v11, v1}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
13736     goto/16 :goto_31
13738     :cond_c0
13739     const-string v0, "ActivityManager"
13741     new-instance v1, Ljava/lang/StringBuilder;
13743     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
13745     const-string v4, "Permission Denial: Accessing service "
13747     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13749     move-result-object v1
13751     iget-object v4, v8, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
13753     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13755     move-result-object v1
13757     const-string v4, " from pid="
13759     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13761     move-result-object v1
13763     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13765     move-result-object v1
13767     const-string v4, ", uid="
13769     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13771     move-result-object v1
13773     invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13775     move-result-object v1
13777     const-string v4, " requires "
13779     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13781     move-result-object v1
13783     iget-object v4, v8, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
13785     invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13787     move-result-object v1
13789     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13791     move-result-object v1
13793     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13795     new-instance v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
13797     iget-object v1, v8, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
13799     invoke-direct {v0, p0, v11, v1}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
13801     goto/16 :goto_31
13803     :cond_103
13804     new-instance v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
13806     invoke-direct {v0, p0, v8, v11}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
13808     goto/16 :goto_31
13810     :cond_10a
13811     move-object v0, v11
13813     goto/16 :goto_31
13815     :catch_10d
13816     move-exception v0
13818     goto/16 :goto_49
13819 .end method
13821 .method private final findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)Lcom/android/server/am/ServiceRecord;
13822     .registers 6
13824     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
13826     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
13828     move-result v2
13830     invoke-virtual {v1, p1, v2}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
13832     move-result-object v0
13834     if-ne v0, p2, :cond_d
13836     :goto_c
13837     return-object v0
13839     :cond_d
13840     const/4 v0, 0x0
13842     goto :goto_c
13843 .end method
13845 .method private final finishReceiverLocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
13846     .registers 14
13848     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
13850     move-result-object v1
13852     if-nez v1, :cond_f
13854     const-string v0, "ActivityManager"
13856     const-string v2, "finishReceiver called but not found on queue"
13858     invoke-static {v0, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13860     const/4 v0, 0x0
13862     :goto_e
13863     return v0
13865     :cond_f
13866     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
13868     move v2, p2
13870     move-object v3, p3
13872     move-object v4, p4
13874     move v5, p5
13876     move v6, p6
13878     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
13880     move-result v0
13882     goto :goto_e
13883 .end method
13885 .method private forceStopPackageLocked(Ljava/lang/String;I)V
13886     .registers 19
13888     const/4 v4, 0x0
13890     const/4 v5, 0x0
13892     const/4 v6, 0x1
13894     const/4 v7, 0x0
13896     invoke-static/range {p2 .. p2}, Landroid/os/UserId;->getUserId(I)I
13898     move-result v8
13900     move-object/from16 v1, p0
13902     move-object/from16 v2, p1
13904     move/from16 v3, p2
13906     invoke-direct/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
13908     new-instance v4, Landroid/content/Intent;
13910     const-string v1, "android.intent.action.PACKAGE_RESTARTED"
13912     const-string v2, "package"
13914     const/4 v3, 0x0
13916     move-object/from16 v0, p1
13918     invoke-static {v2, v0, v3}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
13920     move-result-object v2
13922     invoke-direct {v4, v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
13924     move-object/from16 v0, p0
13926     iget-boolean v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
13928     if-nez v1, :cond_2c
13930     const/high16 v1, 0x4000
13932     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
13934     :cond_2c
13935     const-string v1, "android.intent.extra.UID"
13937     move/from16 v0, p2
13939     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
13941     const/4 v2, 0x0
13943     const/4 v3, 0x0
13945     const/4 v5, 0x0
13947     const/4 v6, 0x0
13949     const/4 v7, 0x0
13951     const/4 v8, 0x0
13953     const/4 v9, 0x0
13955     const/4 v10, 0x0
13957     const/4 v11, 0x0
13959     const/4 v12, 0x0
13961     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
13963     const/16 v14, 0x3e8
13965     invoke-static/range {p2 .. p2}, Landroid/os/UserId;->getUserId(I)I
13967     move-result v15
13969     move-object/from16 v1, p0
13971     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
13973     return-void
13974 .end method
13976 .method private final forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
13977     .registers 31
13979     if-gez p2, :cond_e
13981     :try_start_2
13982     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
13984     move-result-object v2
13986     move-object/from16 v0, p1
13988     move/from16 v1, p7
13990     invoke-interface {v2, v0, v1}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
13991     :try_end_d
13992     .catch Landroid/os/RemoteException; {:try_start_2 .. :try_end_d} :catch_216
13994     move-result p2
13996     :cond_e
13997     :goto_e
13998     if-eqz p5, :cond_5e
14000     const-string v2, "ActivityManager"
14002     new-instance v5, Ljava/lang/StringBuilder;
14004     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
14006     const-string v6, "Force stopping package "
14008     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14010     move-result-object v5
14012     move-object/from16 v0, p1
14014     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14016     move-result-object v5
14018     const-string v6, " uid="
14020     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14022     move-result-object v5
14024     move/from16 v0, p2
14026     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14028     move-result-object v5
14030     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14032     move-result-object v5
14034     invoke-static {v2, v5}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
14036     move-object/from16 v0, p0
14038     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
14040     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
14042     move-result-object v2
14044     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
14046     move-result-object v2
14048     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
14050     move-result-object v14
14052     :cond_46
14053     :goto_46
14054     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
14056     move-result v2
14058     if-eqz v2, :cond_5e
14060     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
14062     move-result-object v13
14064     check-cast v13, Landroid/util/SparseArray;
14066     move/from16 v0, p2
14068     invoke-virtual {v13, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
14070     move-result-object v2
14072     if-eqz v2, :cond_46
14074     invoke-interface {v14}, Ljava/util/Iterator;->remove()V
14076     goto :goto_46
14078     :cond_5e
14079     const/16 v5, -0x64
14081     const/4 v7, 0x0
14083     const-string v10, "force stop"
14085     move-object/from16 v2, p0
14087     move-object/from16 v3, p1
14089     move/from16 v4, p2
14091     move/from16 v6, p3
14093     move/from16 v8, p5
14095     move/from16 v9, p6
14097     invoke-direct/range {v2 .. v10}, Lcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIZZZZLjava/lang/String;)Z
14099     move-result v15
14101     const/16 v17, 0x0
14103     const/4 v4, 0x0
14105     :goto_76
14106     move-object/from16 v0, p0
14108     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14110     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
14112     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
14114     move-result v2
14116     if-ge v4, v2, :cond_f6
14118     move-object/from16 v0, p0
14120     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14122     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
14124     invoke-virtual {v2, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
14126     move-result-object v3
14128     check-cast v3, Lcom/android/server/am/ActivityRecord;
14130     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
14132     move-object/from16 v0, p1
14134     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14136     move-result v20
14138     iget v2, v3, Lcom/android/server/am/ActivityRecord;->userId:I
14140     move/from16 v0, p7
14142     if-ne v2, v0, :cond_b6
14144     if-nez v20, :cond_a4
14146     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
14148     move-object/from16 v0, v17
14150     if-ne v2, v0, :cond_b6
14152     :cond_a4
14153     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
14155     if-eqz v2, :cond_b0
14157     if-nez p6, :cond_b0
14159     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
14161     iget-boolean v2, v2, Lcom/android/server/am/ProcessRecord;->persistent:Z
14163     if-nez v2, :cond_b6
14165     :cond_b0
14166     if-nez p5, :cond_bb
14168     iget-boolean v2, v3, Lcom/android/server/am/ActivityRecord;->finishing:Z
14170     if-eqz v2, :cond_b9
14172     :cond_b6
14173     :goto_b6
14174     add-int/lit8 v4, v4, 0x1
14176     goto :goto_76
14178     :cond_b9
14179     const/4 v2, 0x1
14181     :goto_ba
14182     return v2
14184     :cond_bb
14185     const/4 v15, 0x1
14187     const-string v2, "ActivityManager"
14189     new-instance v5, Ljava/lang/StringBuilder;
14191     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
14193     const-string v6, "  Force finishing activity "
14195     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14197     move-result-object v5
14199     invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14201     move-result-object v5
14203     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14205     move-result-object v5
14207     invoke-static {v2, v5}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
14209     if-eqz v20, :cond_e2
14211     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
14213     if-eqz v2, :cond_df
14215     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
14217     const/4 v5, 0x1
14219     iput-boolean v5, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
14221     :cond_df
14222     const/4 v2, 0x0
14224     iput-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
14226     :cond_e2
14227     iget-object v0, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
14229     move-object/from16 v17, v0
14231     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
14233     const/4 v5, 0x0
14235     const/4 v6, 0x0
14237     const-string v7, "force-stop"
14239     const/4 v8, 0x1
14241     invoke-virtual/range {v2 .. v8}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
14243     move-result v2
14245     if-eqz v2, :cond_b6
14247     add-int/lit8 v4, v4, -0x1
14249     goto :goto_b6
14251     :cond_f6
14252     new-instance v22, Ljava/util/ArrayList;
14254     invoke-direct/range {v22 .. v22}, Ljava/util/ArrayList;-><init>()V
14256     move-object/from16 v0, p0
14258     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
14260     move/from16 v0, p7
14262     invoke-virtual {v2, v0}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
14264     move-result-object v2
14266     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
14268     move-result-object v16
14270     :cond_109
14271     :goto_109
14272     invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->hasNext()Z
14274     move-result v2
14276     if-eqz v2, :cond_16f
14278     invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->next()Ljava/lang/Object;
14280     move-result-object v21
14282     check-cast v21, Lcom/android/server/am/ServiceRecord;
14284     move-object/from16 v0, v21
14286     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->packageName:Ljava/lang/String;
14288     move-object/from16 v0, p1
14290     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14292     move-result v2
14294     if-eqz v2, :cond_109
14296     move-object/from16 v0, v21
14298     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
14300     if-eqz v2, :cond_131
14302     if-nez p6, :cond_131
14304     move-object/from16 v0, v21
14306     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
14308     iget-boolean v2, v2, Lcom/android/server/am/ProcessRecord;->persistent:Z
14310     if-nez v2, :cond_109
14312     :cond_131
14313     if-nez p5, :cond_135
14315     const/4 v2, 0x1
14317     goto :goto_ba
14319     :cond_135
14320     const/4 v15, 0x1
14322     const-string v2, "ActivityManager"
14324     new-instance v5, Ljava/lang/StringBuilder;
14326     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
14328     const-string v6, "  Force stopping service "
14330     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14332     move-result-object v5
14334     move-object/from16 v0, v21
14336     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14338     move-result-object v5
14340     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14342     move-result-object v5
14344     invoke-static {v2, v5}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
14346     move-object/from16 v0, v21
14348     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
14350     if-eqz v2, :cond_15d
14352     move-object/from16 v0, v21
14354     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
14356     const/4 v5, 0x1
14358     iput-boolean v5, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
14360     :cond_15d
14361     const/4 v2, 0x0
14363     move-object/from16 v0, v21
14365     iput-object v2, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
14367     const/4 v2, 0x0
14369     move-object/from16 v0, v21
14371     iput-object v2, v0, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
14373     move-object/from16 v0, v22
14375     move-object/from16 v1, v21
14377     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
14379     goto :goto_109
14381     :cond_16f
14382     invoke-virtual/range {v22 .. v22}, Ljava/util/ArrayList;->size()I
14384     move-result v11
14386     const/4 v4, 0x0
14388     :goto_174
14389     if-ge v4, v11, :cond_187
14391     move-object/from16 v0, v22
14393     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
14395     move-result-object v2
14397     check-cast v2, Lcom/android/server/am/ServiceRecord;
14399     const/4 v5, 0x1
14401     move-object/from16 v0, p0
14403     invoke-direct {v0, v2, v5}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
14405     add-int/lit8 v4, v4, 0x1
14407     goto :goto_174
14409     :cond_187
14410     new-instance v19, Ljava/util/ArrayList;
14412     invoke-direct/range {v19 .. v19}, Ljava/util/ArrayList;-><init>()V
14414     move-object/from16 v0, p0
14416     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14418     move/from16 v0, p7
14420     invoke-virtual {v2, v0}, Lcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
14422     move-result-object v2
14424     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
14426     move-result-object v2
14428     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
14430     move-result-object v16
14432     :cond_19e
14433     :goto_19e
14434     invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->hasNext()Z
14436     move-result v2
14438     if-eqz v2, :cond_1d6
14440     invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->next()Ljava/lang/Object;
14442     move-result-object v18
14444     check-cast v18, Lcom/android/server/am/ContentProviderRecord;
14446     move-object/from16 v0, v18
14448     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
14450     iget-object v2, v2, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
14452     move-object/from16 v0, p1
14454     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14456     move-result v2
14458     if-eqz v2, :cond_19e
14460     move-object/from16 v0, v18
14462     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14464     if-eqz v2, :cond_1c8
14466     if-nez p6, :cond_1c8
14468     move-object/from16 v0, v18
14470     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14472     iget-boolean v2, v2, Lcom/android/server/am/ProcessRecord;->persistent:Z
14474     if-nez v2, :cond_19e
14476     :cond_1c8
14477     if-nez p5, :cond_1cd
14479     const/4 v2, 0x1
14481     goto/16 :goto_ba
14483     :cond_1cd
14484     const/4 v15, 0x1
14486     move-object/from16 v0, v19
14488     move-object/from16 v1, v18
14490     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
14492     goto :goto_19e
14494     :cond_1d6
14495     invoke-virtual/range {v19 .. v19}, Ljava/util/ArrayList;->size()I
14497     move-result v11
14499     const/4 v4, 0x0
14501     :goto_1db
14502     if-ge v4, v11, :cond_1ef
14504     const/4 v5, 0x0
14506     move-object/from16 v0, v19
14508     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
14510     move-result-object v2
14512     check-cast v2, Lcom/android/server/am/ContentProviderRecord;
14514     const/4 v6, 0x1
14516     move-object/from16 v0, p0
14518     invoke-direct {v0, v5, v2, v6}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
14520     add-int/lit8 v4, v4, 0x1
14522     goto :goto_1db
14524     :cond_1ef
14525     if-eqz p5, :cond_213
14527     if-eqz p4, :cond_1fe
14529     invoke-static {}, Lcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
14531     move-result-object v12
14533     if-eqz v12, :cond_1fe
14535     move-object/from16 v0, p1
14537     invoke-virtual {v12, v0}, Lcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V
14539     :cond_1fe
14540     move-object/from16 v0, p0
14542     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
14544     if-eqz v2, :cond_213
14546     move-object/from16 v0, p0
14548     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14550     const/4 v5, 0x0
14552     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
14554     move-object/from16 v0, p0
14556     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14558     invoke-virtual {v2}, Lcom/android/server/am/ActivityStack;->scheduleIdleLocked()V
14560     :cond_213
14561     move v2, v15
14563     goto/16 :goto_ba
14565     :catch_216
14566     move-exception v2
14568     goto/16 :goto_e
14569 .end method
14571 .method private final generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
14572     .registers 13
14573     .annotation system Ldalvik/annotation/Signature;
14574         value = {
14575             "(",
14576             "Lcom/android/server/am/ProcessRecord;",
14577             ")",
14578             "Ljava/util/List",
14579             "<",
14580             "Landroid/content/pm/ProviderInfo;",
14581             ">;"
14582         }
14583     .end annotation
14585     const/4 v5, 0x0
14587     :try_start_1
14588     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
14590     move-result-object v7
14592     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
14594     iget v9, p1, Lcom/android/server/am/ProcessRecord;->uid:I
14596     const/16 v10, 0xc00
14598     invoke-interface {v7, v8, v9, v10}, Landroid/content/pm/IPackageManager;->queryContentProviders(Ljava/lang/String;II)Ljava/util/List;
14599     :try_end_e
14600     .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_e} :catch_56
14602     move-result-object v5
14604     :goto_f
14605     iget v6, p1, Lcom/android/server/am/ProcessRecord;->userId:I
14607     if-eqz v5, :cond_55
14609     invoke-interface {v5}, Ljava/util/List;->size()I
14611     move-result v0
14613     const/4 v4, 0x0
14615     :goto_18
14616     if-ge v4, v0, :cond_55
14618     invoke-interface {v5, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
14620     move-result-object v2
14622     check-cast v2, Landroid/content/pm/ProviderInfo;
14624     new-instance v1, Landroid/content/ComponentName;
14626     iget-object v7, v2, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
14628     iget-object v8, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14630     invoke-direct {v1, v7, v8}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
14632     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14634     invoke-virtual {v7, v1, v6}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
14636     move-result-object v3
14638     if-nez v3, :cond_3d
14640     new-instance v3, Lcom/android/server/am/ContentProviderRecord;
14642     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
14644     invoke-direct {v3, p0, v2, v7, v1}, Lcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;)V
14646     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14648     invoke-virtual {v7, v1, v3}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
14650     :cond_3d
14651     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
14653     iget-object v8, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14655     invoke-virtual {v7, v8, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14657     iget-object v7, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14659     iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14661     invoke-virtual {p1, v7}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
14663     iget-object v7, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14665     iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14667     invoke-virtual {p0, v7}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
14669     add-int/lit8 v4, v4, 0x1
14671     goto :goto_18
14673     :cond_55
14674     return-object v5
14676     :catch_56
14677     move-exception v7
14679     goto :goto_f
14680 .end method
14682 .method private generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
14683     .registers 9
14685     new-instance v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;
14687     invoke-direct {v0}, Landroid/app/ActivityManager$ProcessErrorStateInfo;-><init>()V
14689     iput p2, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->condition:I
14691     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
14693     iput-object v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->processName:Ljava/lang/String;
14695     iget v1, p1, Lcom/android/server/am/ProcessRecord;->pid:I
14697     iput v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->pid:I
14699     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
14701     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
14703     iput v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->uid:I
14705     iput-object p3, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->tag:Ljava/lang/String;
14707     iput-object p4, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->shortMsg:Ljava/lang/String;
14709     iput-object p5, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->longMsg:Ljava/lang/String;
14711     iput-object p6, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->stackTrace:Ljava/lang/String;
14713     return-object v0
14714 .end method
14716 .method private getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
14717     .registers 6
14719     if-nez p1, :cond_4
14721     const/4 v0, 0x0
14723     :goto_3
14724     return-object v0
14726     :cond_4
14727     new-instance v0, Landroid/content/pm/ApplicationInfo;
14729     invoke-direct {v0, p1}, Landroid/content/pm/ApplicationInfo;-><init>(Landroid/content/pm/ApplicationInfo;)V
14731     iget v1, p1, Landroid/content/pm/ApplicationInfo;->uid:I
14733     invoke-direct {p0, v1, p2}, Lcom/android/server/am/ActivityManagerService;->applyUserId(II)I
14735     move-result v1
14737     iput v1, v0, Landroid/content/pm/ApplicationInfo;->uid:I
14739     new-instance v1, Ljava/lang/StringBuilder;
14741     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
14743     const-string v2, "/data/user/"
14745     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14747     move-result-object v1
14749     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14751     move-result-object v1
14753     const-string v2, "/"
14755     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14757     move-result-object v1
14759     iget-object v2, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14761     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14763     move-result-object v1
14765     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14767     move-result-object v1
14769     iput-object v1, v0, Landroid/content/pm/ApplicationInfo;->dataDir:Ljava/lang/String;
14771     goto :goto_3
14772 .end method
14774 .method private static getCalledPreBootReceiversFile()Ljava/io/File;
14775     .registers 4
14777     invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
14779     move-result-object v0
14781     new-instance v2, Ljava/io/File;
14783     const-string v3, "system"
14785     invoke-direct {v2, v0, v3}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
14787     new-instance v1, Ljava/io/File;
14789     const-string v3, "called_pre_boots.dat"
14791     invoke-direct {v1, v2, v3}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
14793     return-object v1
14794 .end method
14796 .method private getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
14797     .registers 4
14799     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14801     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
14803     move-result-object v0
14805     if-nez v0, :cond_a
14807     const/4 v1, 0x0
14809     :goto_9
14810     return-object v1
14812     :cond_a
14813     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
14815     goto :goto_9
14816 .end method
14818 .method private getCommonServicesLocked()Ljava/util/HashMap;
14819     .registers 4
14820     .annotation system Ldalvik/annotation/Signature;
14821         value = {
14822             "()",
14823             "Ljava/util/HashMap",
14824             "<",
14825             "Ljava/lang/String;",
14826             "Landroid/os/IBinder;",
14827             ">;"
14828         }
14829     .end annotation
14831     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14833     if-nez v0, :cond_32
14835     new-instance v0, Ljava/util/HashMap;
14837     invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
14839     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14841     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14843     const-string v1, "package"
14845     const-string v2, "package"
14847     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14849     move-result-object v2
14851     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14853     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14855     const-string v1, "window"
14857     const-string v2, "window"
14859     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14861     move-result-object v2
14863     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14865     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14867     const-string v1, "alarm"
14869     const-string v2, "alarm"
14871     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14873     move-result-object v2
14875     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14877     :cond_32
14878     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14880     return-object v0
14881 .end method
14883 .method private getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
14884     .registers 5
14886     const/4 v0, 0x0
14888     const/4 v1, 0x1
14890     invoke-direct {p0, v0, p1, p2, v1}, Lcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;Z)Landroid/app/IActivityManager$ContentProviderHolder;
14892     move-result-object v0
14894     return-object v0
14895 .end method
14897 .method private final getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;Z)Landroid/app/IActivityManager$ContentProviderHolder;
14898     .registers 39
14900     const/16 v17, 0x0
14902     const/16 v18, 0x0
14904     monitor-enter p0
14906     const/16 v31, 0x0
14908     if-eqz p1, :cond_47
14910     :try_start_9
14911     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
14913     move-result-object v31
14915     if-nez v31, :cond_47
14917     new-instance v5, Ljava/lang/SecurityException;
14919     new-instance v6, Ljava/lang/StringBuilder;
14921     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
14923     const-string v7, "Unable to find app for caller "
14925     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14927     move-result-object v6
14929     move-object/from16 v0, p1
14931     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14933     move-result-object v6
14935     const-string v7, " (pid="
14937     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14939     move-result-object v6
14941     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
14943     move-result v7
14945     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14947     move-result-object v6
14949     const-string v7, ") when getting content provider "
14951     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14953     move-result-object v6
14955     move-object/from16 v0, p2
14957     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14959     move-result-object v6
14961     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14963     move-result-object v6
14965     invoke-direct {v5, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
14967     throw v5
14969     :catchall_44
14970     move-exception v5
14972     monitor-exit p0
14973     :try_end_46
14974     .catchall {:try_start_9 .. :try_end_46} :catchall_44
14976     throw v5
14978     :cond_47
14979     if-eqz v31, :cond_7d
14981     :try_start_49
14982     move-object/from16 v0, v31
14984     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
14986     :goto_4d
14987     invoke-static {v5}, Landroid/os/UserId;->getUserId(I)I
14989     move-result v33
14991     move-object/from16 v0, p0
14993     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14995     move-object/from16 v0, p2
14997     move/from16 v1, v33
14999     invoke-virtual {v5, v0, v1}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
15001     move-result-object v19
15003     if-eqz v19, :cond_82
15005     const/16 v30, 0x1
15007     :goto_61
15008     if-eqz v30, :cond_146
15010     move-object/from16 v0, v19
15012     iget-object v0, v0, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
15014     move-object/from16 v18, v0
15016     move-object/from16 v0, p0
15018     move-object/from16 v1, v18
15020     move-object/from16 v2, v31
15022     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
15024     move-result-object v26
15026     if-eqz v26, :cond_85
15028     new-instance v5, Ljava/lang/SecurityException;
15030     move-object/from16 v0, v26
15032     invoke-direct {v5, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
15034     throw v5
15036     :cond_7d
15037     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
15039     move-result v5
15041     goto :goto_4d
15043     :cond_82
15044     const/16 v30, 0x0
15046     goto :goto_61
15048     :cond_85
15049     if-eqz v31, :cond_9f
15051     move-object/from16 v0, v19
15053     move-object/from16 v1, v31
15055     invoke-virtual {v0, v1}, Lcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
15057     move-result v5
15059     if-eqz v5, :cond_9f
15061     const/4 v5, 0x0
15063     move-object/from16 v0, v19
15065     invoke-virtual {v0, v5}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
15067     move-result-object v23
15069     const/4 v5, 0x0
15071     move-object/from16 v0, v23
15073     iput-object v5, v0, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
15075     monitor-exit p0
15077     :goto_9e
15078     return-object v23
15080     :cond_9f
15081     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
15083     move-result-wide v27
15085     move-object/from16 v0, p0
15087     move-object/from16 v1, v31
15089     move-object/from16 v2, v19
15091     move-object/from16 v3, p3
15093     move/from16 v4, p4
15095     invoke-virtual {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
15097     move-result-object v17
15099     if-eqz v17, :cond_d7
15101     move-object/from16 v0, v17
15103     iget v5, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
15105     move-object/from16 v0, v17
15107     iget v6, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
15109     add-int/2addr v5, v6
15111     const/4 v6, 0x1
15113     if-ne v5, v6, :cond_d7
15115     move-object/from16 v0, v19
15117     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15119     if-eqz v5, :cond_d7
15121     move-object/from16 v0, v31
15123     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
15125     const/4 v6, 0x2
15127     if-gt v5, v6, :cond_d7
15129     move-object/from16 v0, v19
15131     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15133     const/4 v6, 0x0
15135     const/4 v7, 0x1
15137     move-object/from16 v0, p0
15139     invoke-virtual {v0, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
15141     :cond_d7
15142     move-object/from16 v0, v19
15144     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15146     if-eqz v5, :cond_143
15148     move-object/from16 v0, v19
15150     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15152     move-object/from16 v0, p0
15154     invoke-direct {v0, v5}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
15156     move-result v32
15158     if-nez v32, :cond_143
15160     const-string v5, "ActivityManager"
15162     new-instance v6, Ljava/lang/StringBuilder;
15164     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
15166     const-string v7, "Existing provider "
15168     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15170     move-result-object v6
15172     move-object/from16 v0, v19
15174     iget-object v7, v0, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
15176     invoke-virtual {v7}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
15178     move-result-object v7
15180     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15182     move-result-object v6
15184     const-string v7, " is crashing; detaching "
15186     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15188     move-result-object v6
15190     move-object/from16 v0, v31
15192     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
15194     move-result-object v6
15196     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15198     move-result-object v6
15200     invoke-static {v5, v6}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
15202     move-object/from16 v0, p0
15204     move-object/from16 v1, v17
15206     move-object/from16 v2, v19
15208     move-object/from16 v3, p3
15210     move/from16 v4, p4
15212     invoke-virtual {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
15214     move-result v25
15216     move-object/from16 v0, v19
15218     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15220     move-object/from16 v0, v19
15222     iget-object v6, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15224     iget v6, v6, Lcom/android/server/am/ProcessRecord;->pid:I
15226     move-object/from16 v0, v19
15228     iget-object v7, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
15230     iget-object v7, v7, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
15232     move-object/from16 v0, p0
15234     invoke-virtual {v0, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
15236     if-nez v25, :cond_13f
15238     const/16 v23, 0x0
15240     monitor-exit p0
15242     goto/16 :goto_9e
15244     :cond_13f
15245     const/16 v30, 0x0
15247     const/16 v17, 0x0
15249     :cond_143
15250     invoke-static/range {v27 .. v28}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15251     :try_end_146
15252     .catchall {:try_start_49 .. :try_end_146} :catchall_44
15254     :cond_146
15255     if-nez v30, :cond_355
15257     :try_start_148
15258     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
15260     move-result-object v5
15262     const/16 v6, 0xc00
15264     move-object/from16 v0, p2
15266     move/from16 v1, v33
15268     invoke-interface {v5, v0, v6, v1}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
15269     :try_end_155
15270     .catchall {:try_start_148 .. :try_end_155} :catchall_44
15271     .catch Landroid/os/RemoteException; {:try_start_148 .. :try_end_155} :catch_409
15273     move-result-object v18
15275     :goto_156
15276     if-nez v18, :cond_15d
15278     const/16 v23, 0x0
15280     :try_start_15a
15281     monitor-exit p0
15283     goto/16 :goto_9e
15285     :cond_15d
15286     move-object/from16 v0, v18
15288     iget-object v5, v0, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
15290     move-object/from16 v0, v18
15292     iget-object v6, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15294     move-object/from16 v0, p0
15296     invoke-virtual {v0, v5, v6}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
15298     move-result v5
15300     if-eqz v5, :cond_16f
15302     const/16 v33, 0x0
15304     :cond_16f
15305     move-object/from16 v0, v18
15307     iget-object v5, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15309     move-object/from16 v0, p0
15311     move/from16 v1, v33
15313     invoke-direct {v0, v5, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
15315     move-result-object v5
15317     move-object/from16 v0, v18
15319     iput-object v5, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15321     move-object/from16 v0, p0
15323     move-object/from16 v1, v18
15325     move-object/from16 v2, v31
15327     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
15329     move-result-object v26
15331     if-eqz v26, :cond_193
15333     new-instance v5, Ljava/lang/SecurityException;
15335     move-object/from16 v0, v26
15337     invoke-direct {v5, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
15339     throw v5
15341     :cond_193
15342     move-object/from16 v0, p0
15344     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
15346     if-nez v5, :cond_1b9
15348     move-object/from16 v0, p0
15350     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
15352     if-nez v5, :cond_1b9
15354     move-object/from16 v0, p0
15356     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
15358     if-nez v5, :cond_1b9
15360     move-object/from16 v0, v18
15362     iget-object v5, v0, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
15364     const-string v6, "system"
15366     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
15368     move-result v5
15370     if-nez v5, :cond_1b9
15372     new-instance v5, Ljava/lang/IllegalArgumentException;
15374     const-string v6, "Attempt to launch content provider before system ready"
15376     invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
15378     throw v5
15380     :cond_1b9
15381     new-instance v16, Landroid/content/ComponentName;
15383     move-object/from16 v0, v18
15385     iget-object v5, v0, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
15387     move-object/from16 v0, v18
15389     iget-object v6, v0, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
15391     move-object/from16 v0, v16
15393     invoke-direct {v0, v5, v6}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
15395     move-object/from16 v0, p0
15397     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
15399     move-object/from16 v0, v16
15401     move/from16 v1, v33
15403     invoke-virtual {v5, v0, v1}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
15404     :try_end_1d3
15405     .catchall {:try_start_15a .. :try_end_1d3} :catchall_44
15407     move-result-object v19
15409     if-nez v19, :cond_20f
15411     const/16 v22, 0x1
15413     :goto_1d8
15414     if-eqz v22, :cond_229
15416     :try_start_1da
15417     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
15419     move-result-object v5
15421     move-object/from16 v0, v18
15423     iget-object v6, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15425     iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15427     const/16 v7, 0x400
15429     move/from16 v0, v33
15431     invoke-interface {v5, v6, v7, v0}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
15433     move-result-object v15
15435     if-nez v15, :cond_212
15437     const-string v5, "ActivityManager"
15439     new-instance v6, Ljava/lang/StringBuilder;
15441     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
15443     const-string v7, "No package info for content provider "
15445     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15447     move-result-object v6
15449     move-object/from16 v0, v18
15451     iget-object v7, v0, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
15453     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15455     move-result-object v6
15457     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15459     move-result-object v6
15461     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15462     :try_end_20a
15463     .catchall {:try_start_1da .. :try_end_20a} :catchall_44
15464     .catch Landroid/os/RemoteException; {:try_start_1da .. :try_end_20a} :catch_406
15466     const/16 v23, 0x0
15468     :try_start_20c
15469     monitor-exit p0
15470     :try_end_20d
15471     .catchall {:try_start_20c .. :try_end_20d} :catchall_44
15473     goto/16 :goto_9e
15475     :cond_20f
15476     const/16 v22, 0x0
15478     goto :goto_1d8
15480     :cond_212
15481     :try_start_212
15482     move-object/from16 v0, p0
15484     move/from16 v1, v33
15486     invoke-direct {v0, v15, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
15488     move-result-object v15
15490     new-instance v20, Lcom/android/server/am/ContentProviderRecord;
15492     move-object/from16 v0, v20
15494     move-object/from16 v1, p0
15496     move-object/from16 v2, v18
15498     move-object/from16 v3, v16
15500     invoke-direct {v0, v1, v2, v15, v3}, Lcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;)V
15501     :try_end_227
15502     .catchall {:try_start_212 .. :try_end_227} :catchall_44
15503     .catch Landroid/os/RemoteException; {:try_start_212 .. :try_end_227} :catch_406
15505     move-object/from16 v19, v20
15507     :cond_229
15508     :goto_229
15509     if-eqz v31, :cond_23f
15511     :try_start_22b
15512     move-object/from16 v0, v19
15514     move-object/from16 v1, v31
15516     invoke-virtual {v0, v1}, Lcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
15518     move-result v5
15520     if-eqz v5, :cond_23f
15522     const/4 v5, 0x0
15524     move-object/from16 v0, v19
15526     invoke-virtual {v0, v5}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
15528     move-result-object v23
15530     monitor-exit p0
15532     goto/16 :goto_9e
15534     :cond_23f
15535     move-object/from16 v0, p0
15537     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15539     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
15541     move-result v14
15543     const/16 v24, 0x0
15545     :goto_249
15546     move/from16 v0, v24
15548     if-ge v0, v14, :cond_25b
15550     move-object/from16 v0, p0
15552     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15554     move/from16 v0, v24
15556     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
15558     move-result-object v5
15560     move-object/from16 v0, v19
15562     if-ne v5, v0, :cond_2e0
15564     :cond_25b
15565     move/from16 v0, v24
15567     if-lt v0, v14, :cond_328
15569     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
15570     :try_end_262
15571     .catchall {:try_start_22b .. :try_end_262} :catchall_44
15573     move-result-wide v27
15575     :try_start_263
15576     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
15578     move-result-object v5
15580     move-object/from16 v0, v19
15582     iget-object v6, v0, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15584     iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15586     const/4 v7, 0x0
15588     move/from16 v0, v33
15590     invoke-interface {v5, v6, v7, v0}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
15591     :try_end_273
15592     .catchall {:try_start_263 .. :try_end_273} :catchall_311
15593     .catch Landroid/os/RemoteException; {:try_start_263 .. :try_end_273} :catch_403
15594     .catch Ljava/lang/IllegalArgumentException; {:try_start_263 .. :try_end_273} :catch_2e4
15596     :goto_273
15597     :try_start_273
15598     move-object/from16 v0, v18
15600     iget-object v6, v0, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
15602     move-object/from16 v0, v19
15604     iget-object v7, v0, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15606     const/4 v8, 0x0
15608     const/4 v9, 0x0
15610     const-string v10, "content provider"
15612     new-instance v11, Landroid/content/ComponentName;
15614     move-object/from16 v0, v18
15616     iget-object v5, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15618     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15620     move-object/from16 v0, v18
15622     iget-object v12, v0, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
15624     invoke-direct {v11, v5, v12}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
15626     const/4 v12, 0x0
15628     const/4 v13, 0x0
15630     move-object/from16 v5, p0
15632     invoke-virtual/range {v5 .. v13}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
15634     move-result-object v29
15636     if-nez v29, :cond_316
15638     const-string v5, "ActivityManager"
15640     new-instance v6, Ljava/lang/StringBuilder;
15642     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
15644     const-string v7, "Unable to launch app "
15646     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15648     move-result-object v6
15650     move-object/from16 v0, v18
15652     iget-object v7, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15654     iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15656     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15658     move-result-object v6
15660     const-string v7, "/"
15662     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15664     move-result-object v6
15666     move-object/from16 v0, v18
15668     iget-object v7, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15670     iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I
15672     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
15674     move-result-object v6
15676     const-string v7, " for provider "
15678     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15680     move-result-object v6
15682     move-object/from16 v0, p2
15684     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15686     move-result-object v6
15688     const-string v7, ": process is bad"
15690     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15692     move-result-object v6
15694     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15696     move-result-object v6
15698     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15699     :try_end_2d8
15700     .catchall {:try_start_273 .. :try_end_2d8} :catchall_311
15702     const/16 v23, 0x0
15704     :try_start_2da
15705     invoke-static/range {v27 .. v28}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15707     monitor-exit p0
15708     :try_end_2de
15709     .catchall {:try_start_2da .. :try_end_2de} :catchall_44
15711     goto/16 :goto_9e
15713     :cond_2e0
15714     add-int/lit8 v24, v24, 0x1
15716     goto/16 :goto_249
15718     :catch_2e4
15719     move-exception v21
15721     :try_start_2e5
15722     const-string v5, "ActivityManager"
15724     new-instance v6, Ljava/lang/StringBuilder;
15726     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
15728     const-string v7, "Failed trying to unstop package "
15730     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15732     move-result-object v6
15734     move-object/from16 v0, v19
15736     iget-object v7, v0, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15738     iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15740     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15742     move-result-object v6
15744     const-string v7, ": "
15746     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15748     move-result-object v6
15750     move-object/from16 v0, v21
15752     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
15754     move-result-object v6
15756     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15758     move-result-object v6
15760     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15761     :try_end_30f
15762     .catchall {:try_start_2e5 .. :try_end_30f} :catchall_311
15764     goto/16 :goto_273
15766     :catchall_311
15767     move-exception v5
15769     :try_start_312
15770     invoke-static/range {v27 .. v28}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15772     throw v5
15773     :try_end_316
15774     .catchall {:try_start_312 .. :try_end_316} :catchall_44
15776     :cond_316
15777     :try_start_316
15778     move-object/from16 v0, v29
15780     move-object/from16 v1, v19
15782     iput-object v0, v1, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
15784     move-object/from16 v0, p0
15786     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15788     move-object/from16 v0, v19
15790     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
15791     :try_end_325
15792     .catchall {:try_start_316 .. :try_end_325} :catchall_311
15794     :try_start_325
15795     invoke-static/range {v27 .. v28}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15797     :cond_328
15798     if-eqz v22, :cond_335
15800     move-object/from16 v0, p0
15802     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
15804     move-object/from16 v0, v16
15806     move-object/from16 v1, v19
15808     invoke-virtual {v5, v0, v1}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
15810     :cond_335
15811     move-object/from16 v0, p0
15813     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
15815     move-object/from16 v0, p2
15817     move-object/from16 v1, v19
15819     invoke-virtual {v5, v0, v1}, Lcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
15821     move-object/from16 v0, p0
15823     move-object/from16 v1, v31
15825     move-object/from16 v2, v19
15827     move-object/from16 v3, p3
15829     move/from16 v4, p4
15831     invoke-virtual {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
15833     move-result-object v17
15835     if-eqz v17, :cond_355
15837     const/4 v5, 0x1
15839     move-object/from16 v0, v17
15841     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15843     :cond_355
15844     monitor-exit p0
15845     :try_end_356
15846     .catchall {:try_start_325 .. :try_end_356} :catchall_44
15848     monitor-enter v19
15850     :cond_357
15851     :goto_357
15852     :try_start_357
15853     move-object/from16 v0, v19
15855     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
15857     if-nez v5, :cond_3e8
15859     move-object/from16 v0, v19
15861     iget-object v5, v0, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
15863     if-nez v5, :cond_3cc
15865     const-string v5, "ActivityManager"
15867     new-instance v6, Ljava/lang/StringBuilder;
15869     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
15871     const-string v7, "Unable to launch app "
15873     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15875     move-result-object v6
15877     move-object/from16 v0, v18
15879     iget-object v7, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15881     iget-object v7, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15883     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15885     move-result-object v6
15887     const-string v7, "/"
15889     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15891     move-result-object v6
15893     move-object/from16 v0, v18
15895     iget-object v7, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15897     iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I
15899     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
15901     move-result-object v6
15903     const-string v7, " for provider "
15905     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15907     move-result-object v6
15909     move-object/from16 v0, p2
15911     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15913     move-result-object v6
15915     const-string v7, ": launching app became null"
15917     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15919     move-result-object v6
15921     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15923     move-result-object v6
15925     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15927     const/16 v5, 0x7554
15929     const/4 v6, 0x3
15931     new-array v6, v6, [Ljava/lang/Object;
15933     const/4 v7, 0x0
15935     move-object/from16 v0, v18
15937     iget-object v8, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15939     iget-object v8, v8, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15941     aput-object v8, v6, v7
15943     const/4 v7, 0x1
15945     move-object/from16 v0, v18
15947     iget-object v8, v0, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15949     iget v8, v8, Landroid/content/pm/ApplicationInfo;->uid:I
15951     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15953     move-result-object v8
15955     aput-object v8, v6, v7
15957     const/4 v7, 0x2
15959     aput-object p2, v6, v7
15961     invoke-static {v5, v6}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
15963     const/16 v23, 0x0
15965     monitor-exit v19
15967     goto/16 :goto_9e
15969     :catchall_3c9
15970     move-exception v5
15972     monitor-exit v19
15973     :try_end_3cb
15974     .catchall {:try_start_357 .. :try_end_3cb} :catchall_3c9
15976     throw v5
15978     :cond_3cc
15979     if-eqz v17, :cond_3d3
15981     const/4 v5, 0x1
15983     :try_start_3cf
15984     move-object/from16 v0, v17
15986     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15988     :cond_3d3
15989     invoke-virtual/range {v19 .. v19}, Ljava/lang/Object;->wait()V
15990     :try_end_3d6
15991     .catchall {:try_start_3cf .. :try_end_3d6} :catchall_3df
15992     .catch Ljava/lang/InterruptedException; {:try_start_3cf .. :try_end_3d6} :catch_3f9
15994     if-eqz v17, :cond_357
15996     const/4 v5, 0x0
15998     :try_start_3d9
15999     move-object/from16 v0, v17
16001     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
16003     goto/16 :goto_357
16005     :catchall_3df
16006     move-exception v5
16008     if-eqz v17, :cond_3e7
16010     const/4 v6, 0x0
16012     move-object/from16 v0, v17
16014     iput-boolean v6, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
16016     :cond_3e7
16017     throw v5
16019     :cond_3e8
16020     monitor-exit v19
16021     :try_end_3e9
16022     .catchall {:try_start_3d9 .. :try_end_3e9} :catchall_3c9
16024     if-eqz v19, :cond_3f7
16026     move-object/from16 v0, v19
16028     move-object/from16 v1, v17
16030     invoke-virtual {v0, v1}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
16032     move-result-object v5
16034     :goto_3f3
16035     move-object/from16 v23, v5
16037     goto/16 :goto_9e
16039     :cond_3f7
16040     const/4 v5, 0x0
16042     goto :goto_3f3
16044     :catch_3f9
16045     move-exception v5
16047     if-eqz v17, :cond_357
16049     const/4 v5, 0x0
16051     :try_start_3fd
16052     move-object/from16 v0, v17
16054     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
16055     :try_end_401
16056     .catchall {:try_start_3fd .. :try_end_401} :catchall_3c9
16058     goto/16 :goto_357
16060     :catch_403
16061     move-exception v5
16063     goto/16 :goto_273
16065     :catch_406
16066     move-exception v5
16068     goto/16 :goto_229
16070     :catch_409
16071     move-exception v5
16073     goto/16 :goto_156
16074 .end method
16076 .method private final getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I
16077     .registers 6
16079     invoke-interface {p1}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
16081     move-result-object v2
16083     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
16085     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
16087     move-result v3
16089     add-int/lit8 v0, v3, -0x1
16091     :goto_c
16092     if-ltz v0, :cond_26
16094     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
16096     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
16098     move-result-object v1
16100     check-cast v1, Lcom/android/server/am/ProcessRecord;
16102     iget-object v3, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
16104     if-eqz v3, :cond_23
16106     iget-object v3, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
16108     invoke-interface {v3}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
16110     move-result-object v3
16112     if-ne v3, v2, :cond_23
16114     :goto_22
16115     return v0
16117     :cond_23
16118     add-int/lit8 v0, v0, -0x1
16120     goto :goto_c
16122     :cond_26
16123     const/4 v0, -0x1
16125     goto :goto_22
16126 .end method
16128 .method private final getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;)Ljava/util/List;
16129     .registers 12
16131     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
16133     invoke-virtual {v6}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
16135     move-result-object v5
16137     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
16139     invoke-virtual {v6, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
16141     move-result-object v4
16143     check-cast v4, Ljava/util/ArrayList;
16145     if-nez v4, :cond_12
16147     move-object v1, p3
16149     :goto_11
16150     return-object v1
16152     :cond_12
16153     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
16155     move-result v0
16157     const/4 v2, 0x0
16159     :goto_17
16160     if-ge v2, v0, :cond_35
16162     invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
16164     move-result-object v3
16166     check-cast v3, Landroid/content/Intent;
16168     const/4 v6, 0x1
16170     const-string v7, "ActivityManager"
16172     invoke-virtual {p2, v5, v3, v6, v7}, Landroid/content/IntentFilter;->match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I
16174     move-result v6
16176     if-ltz v6, :cond_32
16178     if-nez p3, :cond_2f
16180     new-instance p3, Ljava/util/ArrayList;
16182     invoke-direct {p3}, Ljava/util/ArrayList;-><init>()V
16184     :cond_2f
16185     invoke-interface {p3, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
16187     :cond_32
16188     add-int/lit8 v2, v2, 0x1
16190     goto :goto_17
16192     :cond_35
16193     move-object v1, p3
16195     goto :goto_11
16196 .end method
16198 .method private getUiContext()Landroid/content/Context;
16199     .registers 2
16201     monitor-enter p0
16203     :try_start_1
16204     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
16206     if-nez v0, :cond_11
16208     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
16210     if-eqz v0, :cond_11
16212     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
16214     invoke-static {v0}, Lcom/android/internal/app/ThemeUtils;->createUiContext(Landroid/content/Context;)Landroid/content/Context;
16216     move-result-object v0
16218     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
16220     :cond_11
16221     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
16223     if-eqz v0, :cond_19
16225     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
16227     :goto_17
16228     monitor-exit p0
16230     return-object v0
16232     :cond_19
16233     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
16235     goto :goto_17
16237     :catchall_1c
16238     move-exception v0
16240     monitor-exit p0
16241     :try_end_1e
16242     .catchall {:try_start_1 .. :try_end_1e} :catchall_1c
16244     throw v0
16245 .end method
16247 .method private handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
16248     .registers 19
16250     move-object/from16 v0, p0
16252     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
16254     if-eqz v2, :cond_24
16256     const-string v2, "ActivityManager"
16258     new-instance v5, Ljava/lang/StringBuilder;
16260     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16262     const-string v6, "handleAppCrashLocked: "
16264     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16266     move-result-object v5
16268     move-object/from16 v0, p1
16270     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
16272     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16274     move-result-object v5
16276     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16278     move-result-object v5
16280     invoke-static {v2, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
16282     const/4 v2, 0x0
16284     :goto_23
16285     return v2
16287     :cond_24
16288     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
16290     move-result-wide v14
16292     move-object/from16 v0, p1
16294     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
16296     if-nez v2, :cond_de
16298     move-object/from16 v0, p0
16300     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
16302     move-object/from16 v0, p1
16304     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16306     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16308     move-object/from16 v0, p1
16310     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16312     invoke-virtual {v2, v5, v6}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
16314     move-result-object v11
16316     check-cast v11, Ljava/lang/Long;
16318     :goto_42
16319     if-eqz v11, :cond_180
16321     invoke-virtual {v11}, Ljava/lang/Long;->longValue()J
16323     move-result-wide v5
16325     const-wide/32 v8, 0xea60
16327     add-long/2addr v5, v8
16329     cmp-long v2, v14, v5
16331     if-gez v2, :cond_180
16333     const-string v2, "ActivityManager"
16335     new-instance v5, Ljava/lang/StringBuilder;
16337     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16339     const-string v6, "Process "
16341     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16343     move-result-object v5
16345     move-object/from16 v0, p1
16347     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16349     iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16351     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16353     move-result-object v5
16355     const-string v6, " has crashed too many times: killing!"
16357     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16359     move-result-object v5
16361     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16363     move-result-object v5
16365     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16367     const/16 v2, 0x7550
16369     const/4 v5, 0x2
16371     new-array v5, v5, [Ljava/lang/Object;
16373     const/4 v6, 0x0
16375     move-object/from16 v0, p1
16377     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16379     iget-object v8, v8, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16381     aput-object v8, v5, v6
16383     const/4 v6, 0x1
16385     move-object/from16 v0, p1
16387     iget v8, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16389     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
16391     move-result-object v8
16393     aput-object v8, v5, v6
16395     invoke-static {v2, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
16397     move-object/from16 v0, p0
16399     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16401     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
16403     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
16405     move-result v2
16407     add-int/lit8 v4, v2, -0x1
16409     :goto_9c
16410     if-ltz v4, :cond_e1
16412     move-object/from16 v0, p0
16414     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16416     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
16418     invoke-virtual {v2, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
16420     move-result-object v3
16422     check-cast v3, Lcom/android/server/am/ActivityRecord;
16424     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16426     move-object/from16 v0, p1
16428     if-ne v2, v0, :cond_db
16430     const-string v2, "ActivityManager"
16432     new-instance v5, Ljava/lang/StringBuilder;
16434     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16436     const-string v6, "  Force finishing activity "
16438     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16440     move-result-object v5
16442     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
16444     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
16446     move-result-object v6
16448     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
16450     move-result-object v6
16452     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16454     move-result-object v5
16456     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16458     move-result-object v5
16460     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16462     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16464     const/4 v5, 0x0
16466     const/4 v6, 0x0
16468     const-string v7, "crashed"
16470     invoke-virtual/range {v2 .. v7}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
16472     :cond_db
16473     add-int/lit8 v4, v4, -0x1
16475     goto :goto_9c
16477     :cond_de
16478     const/4 v11, 0x0
16480     goto/16 :goto_42
16482     :cond_e1
16483     move-object/from16 v0, p1
16485     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
16487     if-nez v2, :cond_14f
16489     const/16 v2, 0x753f
16491     const/4 v5, 0x2
16493     new-array v5, v5, [Ljava/lang/Object;
16495     const/4 v6, 0x0
16497     move-object/from16 v0, p1
16499     iget v8, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16501     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
16503     move-result-object v8
16505     aput-object v8, v5, v6
16507     const/4 v6, 0x1
16509     move-object/from16 v0, p1
16511     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16513     iget-object v8, v8, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16515     aput-object v8, v5, v6
16517     invoke-static {v2, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
16519     move-object/from16 v0, p1
16521     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
16523     if-nez v2, :cond_12f
16525     move-object/from16 v0, p0
16527     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
16529     move-object/from16 v0, p1
16531     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16533     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16535     move-object/from16 v0, p1
16537     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16539     invoke-static {v14, v15}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
16541     move-result-object v8
16543     invoke-virtual {v2, v5, v6, v8}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
16545     move-object/from16 v0, p0
16547     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
16549     move-object/from16 v0, p1
16551     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16553     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16555     move-object/from16 v0, p1
16557     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16559     invoke-virtual {v2, v5, v6}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
16561     :cond_12f
16562     const/4 v2, 0x1
16564     move-object/from16 v0, p1
16566     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
16568     const/4 v2, 0x1
16570     move-object/from16 v0, p1
16572     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
16574     const/4 v2, 0x0
16576     const/4 v5, 0x0
16578     const-string v6, "crash"
16580     move-object/from16 v0, p0
16582     move-object/from16 v1, p1
16584     invoke-direct {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
16586     move-object/from16 v0, p0
16588     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16590     const/4 v5, 0x0
16592     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
16594     const/4 v2, 0x0
16596     goto/16 :goto_23
16598     :cond_14f
16599     move-object/from16 v0, p0
16601     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16603     const/4 v5, 0x0
16605     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
16607     :cond_157
16608     :goto_157
16609     move-object/from16 v0, p1
16611     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
16613     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
16615     move-result v2
16617     if-eqz v2, :cond_221
16619     move-object/from16 v0, p1
16621     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
16623     invoke-virtual {v2}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
16625     move-result-object v13
16627     :goto_169
16628     invoke-interface {v13}, Ljava/util/Iterator;->hasNext()Z
16630     move-result v2
16632     if-eqz v2, :cond_221
16634     invoke-interface {v13}, Ljava/util/Iterator;->next()Ljava/lang/Object;
16636     move-result-object v16
16638     check-cast v16, Lcom/android/server/am/ServiceRecord;
16640     move-object/from16 v0, v16
16642     iget v2, v0, Lcom/android/server/am/ServiceRecord;->crashCount:I
16644     add-int/lit8 v2, v2, 0x1
16646     move-object/from16 v0, v16
16648     iput v2, v0, Lcom/android/server/am/ServiceRecord;->crashCount:I
16650     goto :goto_169
16652     :cond_180
16653     move-object/from16 v0, p0
16655     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16657     const/4 v5, 0x0
16659     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
16661     move-result-object v3
16663     if-eqz v3, :cond_157
16665     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16667     move-object/from16 v0, p1
16669     if-ne v2, v0, :cond_157
16671     const-string v2, "ActivityManager"
16673     new-instance v5, Ljava/lang/StringBuilder;
16675     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16677     const-string v6, "  Force finishing activity "
16679     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16681     move-result-object v5
16683     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
16685     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
16687     move-result-object v6
16689     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
16691     move-result-object v6
16693     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16695     move-result-object v5
16697     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16699     move-result-object v5
16701     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16703     move-object/from16 v0, p0
16705     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16707     invoke-virtual {v2, v3}, Lcom/android/server/am/ActivityStack;->indexOfActivityLocked(Lcom/android/server/am/ActivityRecord;)I
16709     move-result v7
16711     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16713     const/4 v8, 0x0
16715     const/4 v9, 0x0
16717     const-string v10, "crashed"
16719     move-object v6, v3
16721     invoke-virtual/range {v5 .. v10}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
16723     add-int/lit8 v7, v7, -0x1
16725     if-ltz v7, :cond_157
16727     move-object/from16 v0, p0
16729     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16731     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
16733     invoke-virtual {v2, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
16735     move-result-object v3
16737     check-cast v3, Lcom/android/server/am/ActivityRecord;
16739     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16741     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
16743     if-eq v2, v5, :cond_1e7
16745     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16747     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
16749     if-eq v2, v5, :cond_1e7
16751     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16753     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSED:Lcom/android/server/am/ActivityStack$ActivityState;
16755     if-ne v2, v5, :cond_157
16757     :cond_1e7
16758     iget-boolean v2, v3, Lcom/android/server/am/ActivityRecord;->isHomeActivity:Z
16760     if-eqz v2, :cond_1f3
16762     move-object/from16 v0, p0
16764     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16766     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16768     if-eq v2, v5, :cond_157
16770     :cond_1f3
16771     const-string v2, "ActivityManager"
16773     new-instance v5, Ljava/lang/StringBuilder;
16775     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16777     const-string v6, "  Force finishing activity "
16779     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16781     move-result-object v5
16783     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
16785     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
16787     move-result-object v6
16789     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
16791     move-result-object v6
16793     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16795     move-result-object v5
16797     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16799     move-result-object v5
16801     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16803     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16805     const/4 v8, 0x0
16807     const/4 v9, 0x0
16809     const-string v10, "crashed"
16811     move-object v6, v3
16813     invoke-virtual/range {v5 .. v10}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
16815     goto/16 :goto_157
16817     :cond_221
16818     move-object/from16 v0, p0
16820     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16822     move-object/from16 v0, p1
16824     if-ne v0, v2, :cond_281
16826     move-object/from16 v0, p0
16828     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16830     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
16832     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
16834     move-result v2
16836     if-lez v2, :cond_281
16838     move-object/from16 v0, p0
16840     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16842     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16844     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
16846     and-int/lit8 v2, v2, 0x1
16848     if-nez v2, :cond_281
16850     move-object/from16 v0, p0
16852     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16854     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
16856     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
16858     move-result-object v12
16860     :cond_24b
16861     :goto_24b
16862     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
16864     move-result v2
16866     if-eqz v2, :cond_281
16868     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
16870     move-result-object v3
16872     check-cast v3, Lcom/android/server/am/ActivityRecord;
16874     iget-boolean v2, v3, Lcom/android/server/am/ActivityRecord;->isHomeActivity:Z
16876     if-eqz v2, :cond_24b
16878     const-string v2, "ActivityManager"
16880     new-instance v5, Ljava/lang/StringBuilder;
16882     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16884     const-string v6, "Clearing package preferred activities from "
16886     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16888     move-result-object v5
16890     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
16892     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16894     move-result-object v5
16896     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16898     move-result-object v5
16900     invoke-static {v2, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
16902     :try_start_275
16903     invoke-static {}, Landroid/app/ActivityThread;->getPackageManager()Landroid/content/pm/IPackageManager;
16905     move-result-object v2
16907     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
16909     invoke-interface {v2, v5}, Landroid/content/pm/IPackageManager;->clearPackagePreferredActivities(Ljava/lang/String;)V
16910     :try_end_27e
16911     .catch Landroid/os/RemoteException; {:try_start_275 .. :try_end_27e} :catch_27f
16913     goto :goto_24b
16915     :catch_27f
16916     move-exception v2
16918     goto :goto_24b
16920     :cond_281
16921     move-object/from16 v0, p1
16923     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
16925     if-nez v2, :cond_29c
16927     move-object/from16 v0, p0
16929     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
16931     move-object/from16 v0, p1
16933     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16935     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16937     move-object/from16 v0, p1
16939     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16941     invoke-static {v14, v15}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
16943     move-result-object v8
16945     invoke-virtual {v2, v5, v6, v8}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
16947     :cond_29c
16948     const/4 v2, 0x1
16950     goto/16 :goto_23
16951 .end method
16953 .method private final handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
16954     .registers 16
16956     const/4 v11, 0x1
16958     const/4 v10, 0x0
16960     const/4 v9, 0x0
16962     const/4 v5, -0x1
16964     invoke-direct {p0, p1, p2, p3, v5}, Lcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
16966     if-nez p2, :cond_e
16968     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
16970     invoke-virtual {v5, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
16972     :cond_e
16973     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
16975     if-ne v5, p1, :cond_15
16977     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
16979     :cond_15
16980     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16982     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16984     if-eqz v5, :cond_27
16986     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16988     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16990     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16992     if-ne v5, p1, :cond_27
16994     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16996     iput-object v9, v5, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16998     :cond_27
16999     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17001     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
17003     if-eqz v5, :cond_39
17005     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17007     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
17009     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
17011     if-ne v5, p1, :cond_39
17013     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17015     iput-object v9, v5, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
17017     :cond_39
17018     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17020     invoke-virtual {v5, p1}, Lcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)V
17022     const/4 v0, 0x1
17024     const/4 v1, 0x0
17026     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17028     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
17030     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
17032     move-result v2
17034     :goto_48
17035     if-lez v2, :cond_ca
17037     add-int/lit8 v2, v2, -0x1
17039     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17041     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
17043     invoke-virtual {v5, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
17045     move-result-object v4
17047     check-cast v4, Lcom/android/server/am/ActivityRecord;
17049     iget-object v5, v4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
17051     if-ne v5, p1, :cond_b8
17053     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->haveState:Z
17055     if-nez v5, :cond_62
17057     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->stateNotNeeded:Z
17059     if-eqz v5, :cond_66
17061     :cond_62
17062     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->finishing:Z
17064     if-eqz v5, :cond_ba
17066     :cond_66
17067     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->finishing:Z
17069     if-nez v5, :cond_ae
17071     const-string v5, "ActivityManager"
17073     new-instance v6, Ljava/lang/StringBuilder;
17075     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
17077     const-string v7, "Force removing "
17079     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17081     move-result-object v6
17083     invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17085     move-result-object v6
17087     const-string v7, ": app died, no saved state"
17089     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17091     move-result-object v6
17093     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17095     move-result-object v6
17097     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
17099     const/16 v5, 0x7531
17101     const/4 v6, 0x4
17103     new-array v6, v6, [Ljava/lang/Object;
17105     invoke-static {v4}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
17107     move-result v7
17109     invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17111     move-result-object v7
17113     aput-object v7, v6, v10
17115     iget-object v7, v4, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
17117     iget v7, v7, Lcom/android/server/am/TaskRecord;->taskId:I
17119     invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17121     move-result-object v7
17123     aput-object v7, v6, v11
17125     const/4 v7, 0x2
17127     iget-object v8, v4, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
17129     aput-object v8, v6, v7
17131     const/4 v7, 0x3
17133     const-string v8, "proc died without state saved"
17135     aput-object v8, v6, v7
17137     invoke-static {v5, v6}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
17139     :cond_ae
17140     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17142     invoke-virtual {v5, v4}, Lcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;)V
17144     :cond_b3
17145     :goto_b3
17146     iget-object v5, v4, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
17148     invoke-virtual {v5, v4, v11, v11}, Lcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V
17150     :cond_b8
17151     const/4 v0, 0x0
17153     goto :goto_48
17155     :cond_ba
17156     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->visible:Z
17158     if-eqz v5, :cond_bf
17160     const/4 v1, 0x1
17162     :cond_bf
17163     iput-object v9, v4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
17165     iput-boolean v10, v4, Lcom/android/server/am/ActivityRecord;->nowVisible:Z
17167     iget-boolean v5, v4, Lcom/android/server/am/ActivityRecord;->haveState:Z
17169     if-nez v5, :cond_b3
17171     iput-object v9, v4, Lcom/android/server/am/ActivityRecord;->icicle:Landroid/os/Bundle;
17173     goto :goto_b3
17175     :cond_ca
17176     iget-object v5, p1, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
17178     invoke-virtual {v5}, Ljava/util/ArrayList;->clear()V
17180     iget-object v5, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
17182     if-eqz v5, :cond_108
17184     const-string v5, "ActivityManager"
17186     new-instance v6, Ljava/lang/StringBuilder;
17188     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
17190     const-string v7, "Crash of app "
17192     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17194     move-result-object v6
17196     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17198     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17200     move-result-object v6
17202     const-string v7, " running instrumentation "
17204     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17206     move-result-object v6
17208     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
17210     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17212     move-result-object v6
17214     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17216     move-result-object v6
17218     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
17220     new-instance v3, Landroid/os/Bundle;
17222     invoke-direct {v3}, Landroid/os/Bundle;-><init>()V
17224     const-string v5, "shortMsg"
17226     const-string v6, "Process crashed."
17228     invoke-virtual {v3, v5, v6}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
17230     invoke-virtual {p0, p1, v10, v3}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
17232     :cond_108
17233     if-nez p2, :cond_119
17235     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17237     invoke-virtual {v5, v9}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
17239     move-result v5
17241     if-nez v5, :cond_119
17243     if-eqz v1, :cond_119
17245     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17247     invoke-virtual {v5, v9, v10}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;I)V
17249     :cond_119
17250     return-void
17251 .end method
17253 .method public static final installSystemProviders()V
17254     .registers 8
17256     sget-object v5, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17258     monitor-enter v5
17260     :try_start_3
17261     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17263     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
17265     const-string v6, "system"
17267     const/16 v7, 0x3e8
17269     invoke-virtual {v4, v6, v7}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
17271     move-result-object v0
17273     check-cast v0, Lcom/android/server/am/ProcessRecord;
17275     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17277     invoke-direct {v4, v0}, Lcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
17279     move-result-object v3
17281     if-eqz v3, :cond_55
17283     invoke-interface {v3}, Ljava/util/List;->size()I
17285     move-result v4
17287     add-int/lit8 v1, v4, -0x1
17289     :goto_1f
17290     if-ltz v1, :cond_55
17292     invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
17294     move-result-object v2
17296     check-cast v2, Landroid/content/pm/ProviderInfo;
17298     iget-object v4, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
17300     iget v4, v4, Landroid/content/pm/ApplicationInfo;->flags:I
17302     and-int/lit8 v4, v4, 0x1
17304     if-nez v4, :cond_52
17306     const-string v4, "ActivityManager"
17308     new-instance v6, Ljava/lang/StringBuilder;
17310     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
17312     const-string v7, "Not installing system proc provider "
17314     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17316     move-result-object v6
17318     iget-object v7, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
17320     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17322     move-result-object v6
17324     const-string v7, ": not system .apk"
17326     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17328     move-result-object v6
17330     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17332     move-result-object v6
17334     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
17336     invoke-interface {v3, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
17338     :cond_52
17339     add-int/lit8 v1, v1, -0x1
17341     goto :goto_1f
17343     :cond_55
17344     monitor-exit v5
17345     :try_end_56
17346     .catchall {:try_start_3 .. :try_end_56} :catchall_70
17348     if-eqz v3, :cond_5d
17350     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
17352     invoke-virtual {v4, v3}, Landroid/app/ActivityThread;->installSystemProviders(Ljava/util/List;)V
17354     :cond_5d
17355     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17357     new-instance v5, Lcom/android/server/am/CoreSettingsObserver;
17359     sget-object v6, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17361     invoke-direct {v5, v6}, Lcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
17363     iput-object v5, v4, Lcom/android/server/am/ActivityManagerService;->mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
17365     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17367     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
17369     invoke-virtual {v4}, Lcom/android/server/am/UsageStatsService;->monitorPackages()V
17371     return-void
17373     :catchall_70
17374     move-exception v4
17376     :try_start_71
17377     monitor-exit v5
17378     :try_end_72
17379     .catchall {:try_start_71 .. :try_end_72} :catchall_70
17381     throw v4
17382 .end method
17384 .method private isReceivingBroadcast(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastQueue;
17385     .registers 8
17387     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->curReceiver:Lcom/android/server/am/BroadcastRecord;
17389     if-eqz v4, :cond_7
17391     iget-object v3, v4, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
17393     :goto_6
17394     return-object v3
17396     :cond_7
17397     monitor-enter p0
17399     :try_start_8
17400     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
17402     array-length v2, v0
17404     const/4 v1, 0x0
17406     :goto_c
17407     if-ge v1, v2, :cond_20
17409     aget-object v3, v0, v1
17411     iget-object v4, v3, Lcom/android/server/am/BroadcastQueue;->mPendingBroadcast:Lcom/android/server/am/BroadcastRecord;
17413     if-eqz v4, :cond_1d
17415     iget-object v5, v4, Lcom/android/server/am/BroadcastRecord;->curApp:Lcom/android/server/am/ProcessRecord;
17417     if-ne v5, p1, :cond_1d
17419     monitor-exit p0
17421     goto :goto_6
17423     :catchall_1a
17424     move-exception v5
17426     monitor-exit p0
17427     :try_end_1c
17428     .catchall {:try_start_8 .. :try_end_1c} :catchall_1a
17430     throw v5
17432     :cond_1d
17433     add-int/lit8 v1, v1, 0x1
17435     goto :goto_c
17437     :cond_20
17438     :try_start_20
17439     monitor-exit p0
17440     :try_end_21
17441     .catchall {:try_start_20 .. :try_end_21} :catchall_1a
17443     const/4 v3, 0x0
17445     goto :goto_6
17446 .end method
17448 .method private final killPackageProcessesLocked(Ljava/lang/String;IIZZZZLjava/lang/String;)Z
17449     .registers 23
17451     new-instance v11, Ljava/util/ArrayList;
17453     invoke-direct {v11}, Ljava/util/ArrayList;-><init>()V
17455     new-instance v12, Ljava/lang/StringBuilder;
17457     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
17459     invoke-virtual {v12, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17461     move-result-object v12
17463     const-string v13, ":"
17465     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17467     move-result-object v12
17469     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17471     move-result-object v10
17473     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
17475     invoke-virtual {v12}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
17477     move-result-object v12
17479     invoke-virtual {v12}, Ljava/util/HashMap;->values()Ljava/util/Collection;
17481     move-result-object v12
17483     invoke-interface {v12}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
17485     move-result-object v8
17487     :cond_26
17488     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
17490     move-result v12
17492     if-eqz v12, :cond_85
17494     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
17496     move-result-object v6
17498     check-cast v6, Landroid/util/SparseArray;
17500     invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
17502     move-result v4
17504     const/4 v9, 0x0
17506     :goto_37
17507     if-ge v9, v4, :cond_26
17509     invoke-virtual {v6, v9}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
17511     move-result-object v5
17513     check-cast v5, Lcom/android/server/am/ProcessRecord;
17515     iget-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->persistent:Z
17517     if-eqz v12, :cond_48
17519     if-nez p7, :cond_48
17521     :cond_45
17522     :goto_45
17523     add-int/lit8 v9, v9, 0x1
17525     goto :goto_37
17527     :cond_48
17528     iget-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->removed:Z
17530     if-eqz v12, :cond_52
17532     if-eqz p6, :cond_45
17534     invoke-virtual {v11, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
17536     goto :goto_45
17538     :cond_52
17539     if-lez p2, :cond_62
17541     const/16 v12, 0x3e8
17543     move/from16 v0, p2
17545     if-eq v0, v12, :cond_62
17547     iget-object v12, v5, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
17549     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
17551     move/from16 v0, p2
17553     if-eq v12, v0, :cond_74
17555     :cond_62
17556     iget-object v12, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17558     invoke-virtual {v12, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
17560     move-result v12
17562     if-nez v12, :cond_72
17564     iget-object v12, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17566     invoke-virtual {v12, v10}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
17568     move-result v12
17570     if-eqz v12, :cond_45
17572     :cond_72
17573     if-gez p2, :cond_45
17575     :cond_74
17576     iget v12, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
17578     move/from16 v0, p3
17580     if-lt v12, v0, :cond_45
17582     if-nez p6, :cond_7e
17584     const/4 v12, 0x1
17586     :goto_7d
17587     return v12
17589     :cond_7e
17590     const/4 v12, 0x1
17592     iput-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->removed:Z
17594     invoke-virtual {v11, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
17596     goto :goto_45
17598     :cond_85
17599     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
17601     move-result v3
17603     const/4 v7, 0x0
17605     :goto_8a
17606     if-ge v7, v3, :cond_9e
17608     invoke-virtual {v11, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
17610     move-result-object v12
17612     check-cast v12, Lcom/android/server/am/ProcessRecord;
17614     move/from16 v0, p4
17616     move/from16 v1, p5
17618     move-object/from16 v2, p8
17620     invoke-direct {p0, v12, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
17622     add-int/lit8 v7, v7, 0x1
17624     goto :goto_8a
17626     :cond_9e
17627     if-lez v3, :cond_a2
17629     const/4 v12, 0x1
17631     goto :goto_7d
17633     :cond_a2
17634     const/4 v12, 0x0
17636     goto :goto_7d
17637 .end method
17639 .method private killProcessesBelowAdj(ILjava/lang/String;)Z
17640     .registers 14
17642     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
17644     move-result v6
17646     const/16 v7, 0x3e8
17648     if-eq v6, v7, :cond_10
17650     new-instance v6, Ljava/lang/SecurityException;
17652     const-string v7, "killProcessesBelowAdj() only available to system"
17654     invoke-direct {v6, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
17656     throw v6
17658     :cond_10
17659     const/4 v2, 0x0
17661     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17663     monitor-enter v7
17665     :try_start_14
17666     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17668     invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
17670     move-result v5
17672     const/4 v1, 0x0
17674     :goto_1b
17675     if-ge v1, v5, :cond_8f
17677     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17679     invoke-virtual {v6, v1}, Landroid/util/SparseArray;->keyAt(I)I
17681     move-result v3
17683     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17685     invoke-virtual {v6, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
17687     move-result-object v4
17689     check-cast v4, Lcom/android/server/am/ProcessRecord;
17691     if-nez v4, :cond_30
17693     :cond_2d
17694     :goto_2d
17695     add-int/lit8 v1, v1, 0x1
17697     goto :goto_1b
17699     :cond_30
17700     iget v0, v4, Lcom/android/server/am/ProcessRecord;->setAdj:I
17702     if-le v0, p1, :cond_2d
17704     iget-boolean v6, v4, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
17706     if-nez v6, :cond_2d
17708     const-string v6, "ActivityManager"
17710     new-instance v8, Ljava/lang/StringBuilder;
17712     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
17714     const-string v9, "Killing "
17716     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17718     move-result-object v8
17720     invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17722     move-result-object v8
17724     const-string v9, " (adj "
17726     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17728     move-result-object v8
17730     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17732     move-result-object v8
17734     const-string v9, "): "
17736     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17738     move-result-object v8
17740     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17742     move-result-object v8
17744     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17746     move-result-object v8
17748     invoke-static {v6, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
17750     const/16 v6, 0x7547
17752     const/4 v8, 0x4
17754     new-array v8, v8, [Ljava/lang/Object;
17756     const/4 v9, 0x0
17758     iget v10, v4, Lcom/android/server/am/ProcessRecord;->pid:I
17760     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17762     move-result-object v10
17764     aput-object v10, v8, v9
17766     const/4 v9, 0x1
17768     iget-object v10, v4, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17770     aput-object v10, v8, v9
17772     const/4 v9, 0x2
17774     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17776     move-result-object v10
17778     aput-object v10, v8, v9
17780     const/4 v9, 0x3
17782     aput-object p2, v8, v9
17784     invoke-static {v6, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
17786     const/4 v2, 0x1
17788     const/4 v6, 0x1
17790     iput-boolean v6, v4, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
17792     invoke-static {v3}, Landroid/os/Process;->killProcessQuiet(I)V
17794     goto :goto_2d
17796     :catchall_8c
17797     move-exception v6
17799     monitor-exit v7
17800     :try_end_8e
17801     .catchall {:try_start_14 .. :try_end_8e} :catchall_8c
17803     throw v6
17805     :cond_8f
17806     :try_start_8f
17807     monitor-exit v7
17808     :try_end_90
17809     .catchall {:try_start_8f .. :try_end_90} :catchall_8c
17811     return v2
17812 .end method
17814 .method private final killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
17815     .registers 16
17817     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
17819     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
17821     move-result v9
17823     if-lez v9, :cond_1f
17825     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
17827     invoke-virtual {v9}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
17829     move-result-object v5
17831     :goto_e
17832     invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
17834     move-result v9
17836     if-eqz v9, :cond_1f
17838     invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
17840     move-result-object v7
17842     check-cast v7, Lcom/android/server/am/ConnectionRecord;
17844     const/4 v9, 0x0
17846     invoke-virtual {p0, v7, p1, v9}, Lcom/android/server/am/ActivityManagerService;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V
17848     goto :goto_e
17850     :cond_1f
17851     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
17853     invoke-virtual {v9}, Ljava/util/HashSet;->clear()V
17855     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
17857     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
17859     move-result v9
17861     if-eqz v9, :cond_116
17863     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
17865     invoke-virtual {v9}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
17867     move-result-object v6
17869     :cond_32
17870     :goto_32
17871     invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
17873     move-result v9
17875     if-eqz v9, :cond_10f
17877     invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
17879     move-result-object v8
17881     check-cast v8, Lcom/android/server/am/ServiceRecord;
17883     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
17885     invoke-virtual {v9}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
17887     move-result-object v10
17889     monitor-enter v10
17891     :try_start_45
17892     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
17894     invoke-virtual {v9}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked()V
17896     monitor-exit v10
17897     :try_end_4b
17898     .catchall {:try_start_45 .. :try_end_4b} :catchall_88
17900     const/4 v9, 0x0
17902     iput-object v9, v8, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
17904     const/4 v9, 0x0
17906     iput-object v9, v8, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
17908     const/4 v9, 0x0
17910     iput v9, v8, Lcom/android/server/am/ServiceRecord;->executeNesting:I
17912     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
17914     invoke-virtual {v9, v8}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
17916     move-result v9
17918     if-eqz v9, :cond_5c
17920     :cond_5c
17921     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
17923     invoke-virtual {v9}, Ljava/util/HashMap;->size()I
17925     move-result v9
17927     if-lez v9, :cond_8b
17929     const/4 v3, 0x1
17931     :goto_65
17932     if-eqz v3, :cond_8d
17934     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
17936     invoke-virtual {v9}, Ljava/util/HashMap;->values()Ljava/util/Collection;
17938     move-result-object v9
17940     invoke-interface {v9}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
17942     move-result-object v1
17944     :goto_71
17945     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
17947     move-result v9
17949     if-eqz v9, :cond_8d
17951     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
17953     move-result-object v0
17955     check-cast v0, Lcom/android/server/am/IntentBindRecord;
17957     const/4 v9, 0x0
17959     iput-object v9, v0, Lcom/android/server/am/IntentBindRecord;->binder:Landroid/os/IBinder;
17961     const/4 v9, 0x0
17963     iput-boolean v9, v0, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
17965     iput-boolean v9, v0, Lcom/android/server/am/IntentBindRecord;->received:Z
17967     iput-boolean v9, v0, Lcom/android/server/am/IntentBindRecord;->requested:Z
17969     goto :goto_71
17971     :catchall_88
17972     move-exception v9
17974     :try_start_89
17975     monitor-exit v10
17976     :try_end_8a
17977     .catchall {:try_start_89 .. :try_end_8a} :catchall_88
17979     throw v9
17981     :cond_8b
17982     const/4 v3, 0x0
17984     goto :goto_65
17986     :cond_8d
17987     iget v9, v8, Lcom/android/server/am/ServiceRecord;->crashCount:I
17989     const/4 v10, 0x2
17991     if-lt v9, v10, :cond_e5
17993     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
17995     iget-object v9, v9, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
17997     iget v9, v9, Landroid/content/pm/ApplicationInfo;->flags:I
17999     and-int/lit8 v9, v9, 0x8
18001     if-nez v9, :cond_e5
18003     const-string v9, "ActivityManager"
18005     new-instance v10, Ljava/lang/StringBuilder;
18007     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
18009     const-string v11, "Service crashed "
18011     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18013     move-result-object v10
18015     iget v11, v8, Lcom/android/server/am/ServiceRecord;->crashCount:I
18017     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
18019     move-result-object v10
18021     const-string v11, " times, stopping: "
18023     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18025     move-result-object v10
18027     invoke-virtual {v10, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18029     move-result-object v10
18031     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18033     move-result-object v10
18035     invoke-static {v9, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
18037     const/16 v9, 0x7552
18039     const/4 v10, 0x3
18041     new-array v10, v10, [Ljava/lang/Object;
18043     const/4 v11, 0x0
18045     iget v12, v8, Lcom/android/server/am/ServiceRecord;->crashCount:I
18047     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18049     move-result-object v12
18051     aput-object v12, v10, v11
18053     const/4 v11, 0x1
18055     iget-object v12, v8, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
18057     aput-object v12, v10, v11
18059     const/4 v11, 0x2
18061     iget v12, p1, Lcom/android/server/am/ProcessRecord;->pid:I
18063     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18065     move-result-object v12
18067     aput-object v12, v10, v11
18069     invoke-static {v9, v10}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
18071     const/4 v9, 0x1
18073     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
18075     goto/16 :goto_32
18077     :cond_e5
18078     if-nez p2, :cond_ed
18080     const/4 v9, 0x1
18082     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
18084     goto/16 :goto_32
18086     :cond_ed
18087     const/4 v9, 0x1
18089     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
18091     move-result v2
18093     iget-boolean v9, v8, Lcom/android/server/am/ServiceRecord;->startRequested:Z
18095     if-eqz v9, :cond_32
18097     iget-boolean v9, v8, Lcom/android/server/am/ServiceRecord;->stopIfKilled:Z
18099     if-nez v9, :cond_fc
18101     if-eqz v2, :cond_32
18103     :cond_fc
18104     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
18106     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
18108     move-result v9
18110     if-nez v9, :cond_32
18112     const/4 v9, 0x0
18114     iput-boolean v9, v8, Lcom/android/server/am/ServiceRecord;->startRequested:Z
18116     if-nez v3, :cond_32
18118     const/4 v9, 0x1
18120     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
18122     goto/16 :goto_32
18124     :cond_10f
18125     if-nez p2, :cond_116
18127     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
18129     invoke-virtual {v9}, Ljava/util/HashSet;->clear()V
18131     :cond_116
18132     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
18134     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
18136     move-result v4
18138     :cond_11c
18139     :goto_11c
18140     if-lez v4, :cond_132
18142     add-int/lit8 v4, v4, -0x1
18144     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
18146     invoke-virtual {v9, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
18148     move-result-object v8
18150     check-cast v8, Lcom/android/server/am/ServiceRecord;
18152     iget-object v9, v8, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
18154     if-ne v9, p1, :cond_11c
18156     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
18158     invoke-virtual {v9, v4}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
18160     goto :goto_11c
18162     :cond_132
18163     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
18165     invoke-virtual {v9}, Ljava/util/HashSet;->clear()V
18167     return-void
18168 .end method
18170 .method private logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
18171     .registers 21
18173     if-nez p2, :cond_3
18175     :cond_2
18176     :goto_2
18177     return-void
18179     :cond_3
18180     if-eqz p1, :cond_f
18182     move-object/from16 v0, p1
18184     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
18186     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
18188     and-int/lit16 v2, v2, 0x81
18190     if-eqz v2, :cond_118
18192     :cond_f
18193     const/4 v11, 0x1
18195     :goto_10
18196     if-nez p1, :cond_11b
18198     const-string v14, "unknown"
18200     :goto_14
18201     if-eqz v11, :cond_121
18203     const-string v7, "system_app_strictmode"
18205     :goto_18
18206     move-object/from16 v0, p0
18208     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
18210     const-string v3, "dropbox"
18212     invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
18214     move-result-object v6
18216     check-cast v6, Landroid/os/DropBoxManager;
18218     if-eqz v6, :cond_2
18220     invoke-virtual {v6, v7}, Landroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z
18222     move-result v2
18224     if-eqz v2, :cond_2
18226     if-eqz v11, :cond_125
18228     move-object/from16 v0, p0
18230     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
18232     :goto_32
18233     monitor-enter v5
18235     :try_start_33
18236     invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
18238     move-result v2
18240     if-nez v2, :cond_12e
18242     const/4 v9, 0x1
18244     :goto_3a
18245     move-object/from16 v0, p0
18247     move-object/from16 v1, p1
18249     invoke-direct {v0, v1, v14, v5}, Lcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
18251     const-string v2, "Build: "
18253     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18255     move-result-object v2
18257     sget-object v3, Landroid/os/Build;->FINGERPRINT:Ljava/lang/String;
18259     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18261     move-result-object v2
18263     const-string v3, "\n"
18265     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18267     const-string v2, "System-App: "
18269     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18271     move-result-object v2
18273     invoke-virtual {v2, v11}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
18275     move-result-object v2
18277     const-string v3, "\n"
18279     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18281     const-string v2, "Uptime-Millis: "
18283     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18285     move-result-object v2
18287     move-object/from16 v0, p2
18289     iget-wide v3, v0, Landroid/os/StrictMode$ViolationInfo;->violationUptimeMillis:J
18291     invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
18293     move-result-object v2
18295     const-string v3, "\n"
18297     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18299     move-object/from16 v0, p2
18301     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->violationNumThisLoop:I
18303     if-eqz v2, :cond_8d
18305     const-string v2, "Loop-Violation-Number: "
18307     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18309     move-result-object v2
18311     move-object/from16 v0, p2
18313     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->violationNumThisLoop:I
18315     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
18317     move-result-object v2
18319     const-string v3, "\n"
18321     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18323     :cond_8d
18324     move-object/from16 v0, p2
18326     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->numAnimationsRunning:I
18328     if-eqz v2, :cond_a6
18330     const-string v2, "Animations-Running: "
18332     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18334     move-result-object v2
18336     move-object/from16 v0, p2
18338     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->numAnimationsRunning:I
18340     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
18342     move-result-object v2
18344     const-string v3, "\n"
18346     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18348     :cond_a6
18349     move-object/from16 v0, p2
18351     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->broadcastIntentAction:Ljava/lang/String;
18353     if-eqz v2, :cond_bf
18355     const-string v2, "Broadcast-Intent-Action: "
18357     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18359     move-result-object v2
18361     move-object/from16 v0, p2
18363     iget-object v3, v0, Landroid/os/StrictMode$ViolationInfo;->broadcastIntentAction:Ljava/lang/String;
18365     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18367     move-result-object v2
18369     const-string v3, "\n"
18371     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18373     :cond_bf
18374     move-object/from16 v0, p2
18376     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->durationMillis:I
18378     const/4 v3, -0x1
18380     if-eq v2, v3, :cond_d9
18382     const-string v2, "Duration-Millis: "
18384     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18386     move-result-object v2
18388     move-object/from16 v0, p2
18390     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->durationMillis:I
18392     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
18394     move-result-object v2
18396     const-string v3, "\n"
18398     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18400     :cond_d9
18401     move-object/from16 v0, p2
18403     iget-wide v2, v0, Landroid/os/StrictMode$ViolationInfo;->numInstances:J
18405     const-wide/16 v16, -0x1
18407     cmp-long v2, v2, v16
18409     if-eqz v2, :cond_f6
18411     const-string v2, "Instance-Count: "
18413     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18415     move-result-object v2
18417     move-object/from16 v0, p2
18419     iget-wide v3, v0, Landroid/os/StrictMode$ViolationInfo;->numInstances:J
18421     invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
18423     move-result-object v2
18425     const-string v3, "\n"
18427     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18429     :cond_f6
18430     move-object/from16 v0, p2
18432     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->tags:[Ljava/lang/String;
18434     if-eqz v2, :cond_131
18436     move-object/from16 v0, p2
18438     iget-object v8, v0, Landroid/os/StrictMode$ViolationInfo;->tags:[Ljava/lang/String;
18440     array-length v12, v8
18442     const/4 v10, 0x0
18444     :goto_102
18445     if-ge v10, v12, :cond_131
18447     aget-object v15, v8, v10
18449     const-string v2, "Span-Tag: "
18451     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18453     move-result-object v2
18455     invoke-virtual {v2, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18457     move-result-object v2
18459     const-string v3, "\n"
18461     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18462     :try_end_115
18463     .catchall {:try_start_33 .. :try_end_115} :catchall_181
18465     add-int/lit8 v10, v10, 0x1
18467     goto :goto_102
18469     :cond_118
18470     const/4 v11, 0x0
18472     goto/16 :goto_10
18474     :cond_11b
18475     move-object/from16 v0, p1
18477     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18479     goto/16 :goto_14
18481     :cond_121
18482     const-string v7, "data_app_strictmode"
18484     goto/16 :goto_18
18486     :cond_125
18487     new-instance v5, Ljava/lang/StringBuilder;
18489     const/16 v2, 0x400
18491     invoke-direct {v5, v2}, Ljava/lang/StringBuilder;-><init>(I)V
18493     goto/16 :goto_32
18495     :cond_12e
18496     const/4 v9, 0x0
18498     goto/16 :goto_3a
18500     :cond_131
18501     :try_start_131
18502     const-string v2, "\n"
18504     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18506     move-object/from16 v0, p2
18508     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
18510     if-eqz v2, :cond_14d
18512     move-object/from16 v0, p2
18514     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
18516     iget-object v2, v2, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
18518     if-eqz v2, :cond_14d
18520     move-object/from16 v0, p2
18522     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
18524     iget-object v2, v2, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
18526     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18528     :cond_14d
18529     const-string v2, "\n"
18531     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18533     invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
18535     move-result v2
18537     const/high16 v3, 0x1
18539     if-le v2, v3, :cond_17f
18541     const/4 v13, 0x1
18543     :goto_15b
18544     monitor-exit v5
18545     :try_end_15c
18546     .catchall {:try_start_131 .. :try_end_15c} :catchall_181
18548     if-eqz v11, :cond_160
18550     if-eqz v13, :cond_184
18552     :cond_160
18553     new-instance v2, Lcom/android/server/am/ActivityManagerService$11;
18555     new-instance v3, Ljava/lang/StringBuilder;
18557     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
18559     const-string v4, "Error dump: "
18561     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18563     move-result-object v3
18565     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18567     move-result-object v3
18569     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18571     move-result-object v4
18573     move-object/from16 v3, p0
18575     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/StringBuilder;Landroid/os/DropBoxManager;Ljava/lang/String;)V
18577     invoke-virtual {v2}, Lcom/android/server/am/ActivityManagerService$11;->start()V
18579     goto/16 :goto_2
18581     :cond_17f
18582     const/4 v13, 0x0
18584     goto :goto_15b
18586     :catchall_181
18587     move-exception v2
18589     :try_start_182
18590     monitor-exit v5
18591     :try_end_183
18592     .catchall {:try_start_182 .. :try_end_183} :catchall_181
18594     throw v2
18596     :cond_184
18597     if-eqz v9, :cond_2
18599     new-instance v2, Lcom/android/server/am/ActivityManagerService$12;
18601     new-instance v3, Ljava/lang/StringBuilder;
18603     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
18605     const-string v4, "Error dump: "
18607     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18609     move-result-object v3
18611     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18613     move-result-object v3
18615     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18617     move-result-object v3
18619     move-object/from16 v0, p0
18621     invoke-direct {v2, v0, v3, v6, v7}, Lcom/android/server/am/ActivityManagerService$12;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/os/DropBoxManager;Ljava/lang/String;)V
18623     invoke-virtual {v2}, Lcom/android/server/am/ActivityManagerService$12;->start()V
18625     goto/16 :goto_2
18626 .end method
18628 .method public static final main(I)Landroid/content/Context;
18629     .registers 8
18631     const/4 v6, 0x1
18633     const/4 v5, 0x0
18635     new-instance v3, Lcom/android/server/am/ActivityManagerService$AThread;
18637     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$AThread;-><init>()V
18639     invoke-virtual {v3}, Lcom/android/server/am/ActivityManagerService$AThread;->start()V
18641     monitor-enter v3
18643     :goto_b
18644     :try_start_b
18645     iget-object v4, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mService:Lcom/android/server/am/ActivityManagerService;
18646     :try_end_d
18647     .catchall {:try_start_b .. :try_end_d} :catchall_4b
18649     if-nez v4, :cond_15
18651     :try_start_f
18652     invoke-virtual {v3}, Ljava/lang/Object;->wait()V
18653     :try_end_12
18654     .catchall {:try_start_f .. :try_end_12} :catchall_4b
18655     .catch Ljava/lang/InterruptedException; {:try_start_f .. :try_end_12} :catch_13
18657     goto :goto_b
18659     :catch_13
18660     move-exception v4
18662     goto :goto_b
18664     :cond_15
18665     :try_start_15
18666     monitor-exit v3
18667     :try_end_16
18668     .catchall {:try_start_15 .. :try_end_16} :catchall_4b
18670     iget-object v2, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mService:Lcom/android/server/am/ActivityManagerService;
18672     sput-object v2, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
18674     invoke-static {}, Landroid/app/ActivityThread;->systemMain()Landroid/app/ActivityThread;
18676     move-result-object v0
18678     sput-object v0, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
18680     invoke-virtual {v0}, Landroid/app/ActivityThread;->getSystemContext()Landroid/app/ContextImpl;
18682     move-result-object v1
18684     const v4, 0x103006b
18686     invoke-virtual {v1, v4}, Landroid/content/Context;->setTheme(I)V
18688     iput-object v1, v2, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
18690     iput p0, v2, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
18692     new-instance v4, Lcom/android/server/am/ActivityStack;
18694     invoke-direct {v4, v2, v1, v6}, Lcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/Context;Z)V
18696     iput-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
18698     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
18700     invoke-virtual {v4, v1}, Lcom/android/server/am/BatteryStatsService;->publish(Landroid/content/Context;)V
18702     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
18704     invoke-virtual {v4, v1}, Lcom/android/server/am/UsageStatsService;->publish(Landroid/content/Context;)V
18706     monitor-enter v3
18708     const/4 v4, 0x1
18710     :try_start_41
18711     iput-boolean v4, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mReady:Z
18713     invoke-virtual {v3}, Ljava/lang/Object;->notifyAll()V
18715     monitor-exit v3
18716     :try_end_47
18717     .catchall {:try_start_41 .. :try_end_47} :catchall_4e
18719     invoke-virtual {v2, v5, v5, v5, v5}, Lcom/android/server/am/ActivityManagerService;->startRunning(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
18721     return-object v1
18723     :catchall_4b
18724     move-exception v4
18726     :try_start_4c
18727     monitor-exit v3
18728     :try_end_4d
18729     .catchall {:try_start_4c .. :try_end_4d} :catchall_4b
18731     throw v4
18733     :catchall_4e
18734     move-exception v4
18736     :try_start_4f
18737     monitor-exit v3
18738     :try_end_50
18739     .catchall {:try_start_4f .. :try_end_50} :catchall_4e
18741     throw v4
18742 .end method
18744 .method private makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
18745     .registers 12
18747     const/4 v2, 0x1
18749     iput-boolean v2, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
18751     const/4 v3, 0x0
18753     move-object v0, p0
18755     move-object v1, p1
18757     move-object v4, p2
18759     move-object v5, p3
18761     move-object v6, p4
18763     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
18765     move-result-object v0
18767     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
18769     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
18771     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->stopFreezingAllLocked()V
18773     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
18775     move-result v0
18777     return v0
18778 .end method
18780 .method private makeAppNotRespondingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
18781     .registers 12
18783     const/4 v0, 0x1
18785     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
18787     const/4 v2, 0x2
18789     const/4 v6, 0x0
18791     move-object v0, p0
18793     move-object v1, p1
18795     move-object v3, p2
18797     move-object v4, p3
18799     move-object v5, p4
18801     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
18803     move-result-object v0
18805     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
18807     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
18809     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->stopFreezingAllLocked()V
18811     return-void
18812 .end method
18814 .method private final moveTaskBackwardsLocked(I)V
18815     .registers 4
18817     const-string v0, "ActivityManager"
18819     const-string v1, "moveTaskBackwards not yet implemented!"
18821     invoke-static {v0, v1}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
18823     return-void
18824 .end method
18826 .method private onUserRemoved(Landroid/content/Intent;)V
18827     .registers 18
18829     const-string v1, "android.intent.extra.user_id"
18831     const/4 v2, -0x1
18833     move-object/from16 v0, p1
18835     invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
18837     move-result v8
18839     const/4 v1, 0x1
18841     if-ge v8, v1, :cond_d
18843     :goto_c
18844     return-void
18846     :cond_d
18847     new-instance v13, Ljava/util/ArrayList;
18849     invoke-direct {v13}, Ljava/util/ArrayList;-><init>()V
18851     monitor-enter p0
18853     :try_start_13
18854     move-object/from16 v0, p0
18856     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
18858     invoke-virtual {v1}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
18860     move-result-object v11
18862     invoke-virtual {v11}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
18864     move-result-object v1
18866     invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
18868     move-result-object v10
18870     :cond_23
18871     invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
18873     move-result v1
18875     if-eqz v1, :cond_5d
18877     invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
18879     move-result-object v14
18881     check-cast v14, Ljava/util/Map$Entry;
18883     invoke-interface {v14}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
18885     move-result-object v15
18887     check-cast v15, Landroid/util/SparseArray;
18889     const/4 v9, 0x0
18891     :goto_36
18892     invoke-virtual {v15}, Landroid/util/SparseArray;->size()I
18894     move-result v1
18896     if-ge v9, v1, :cond_23
18898     invoke-virtual {v15, v9}, Landroid/util/SparseArray;->keyAt(I)I
18900     move-result v1
18902     invoke-static {v1}, Landroid/os/UserId;->getUserId(I)I
18904     move-result v1
18906     if-ne v1, v8, :cond_5a
18908     new-instance v1, Landroid/util/Pair;
18910     invoke-interface {v14}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
18912     move-result-object v2
18914     invoke-virtual {v15, v9}, Landroid/util/SparseArray;->keyAt(I)I
18916     move-result v3
18918     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18920     move-result-object v3
18922     invoke-direct {v1, v2, v3}, Landroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
18924     invoke-virtual {v13, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
18926     :cond_5a
18927     add-int/lit8 v9, v9, 0x1
18929     goto :goto_36
18931     :cond_5d
18932     invoke-virtual {v13}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
18934     move-result-object v10
18936     :goto_61
18937     invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
18939     move-result v1
18941     if-eqz v1, :cond_86
18943     invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
18945     move-result-object v12
18947     check-cast v12, Landroid/util/Pair;
18949     iget-object v2, v12, Landroid/util/Pair;->first:Ljava/lang/Object;
18951     check-cast v2, Ljava/lang/String;
18953     iget-object v1, v12, Landroid/util/Pair;->second:Ljava/lang/Object;
18955     check-cast v1, Ljava/lang/Integer;
18957     invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
18959     move-result v3
18961     const/4 v4, 0x0
18963     const/4 v5, 0x0
18965     const/4 v6, 0x1
18967     const/4 v7, 0x1
18969     move-object/from16 v1, p0
18971     invoke-direct/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
18973     goto :goto_61
18975     :catchall_83
18976     move-exception v1
18978     monitor-exit p0
18979     :try_end_85
18980     .catchall {:try_start_13 .. :try_end_85} :catchall_83
18982     throw v1
18984     :cond_86
18985     :try_start_86
18986     monitor-exit p0
18987     :try_end_87
18988     .catchall {:try_start_86 .. :try_end_87} :catchall_83
18990     goto :goto_c
18991 .end method
18993 .method static oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
18994     .registers 5
18996     const/16 v0, 0x190
18998     const/16 v1, 0x12c
19000     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
19002     if-lt p0, v2, :cond_13
19004     if-eqz p1, :cond_12
19006     sget v1, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
19008     sub-int v1, p0, v1
19010     add-int/lit8 v1, v1, 0x1
19012     iput v1, p1, Landroid/app/ActivityManager$RunningAppProcessInfo;->lru:I
19014     :cond_12
19015     :goto_12
19016     return v0
19018     :cond_13
19019     const/16 v2, 0x8
19021     if-lt p0, v2, :cond_19
19023     move v0, v1
19025     goto :goto_12
19027     :cond_19
19028     const/4 v2, 0x6
19030     if-lt p0, v2, :cond_22
19032     if-eqz p1, :cond_12
19034     const/4 v1, 0x0
19036     iput v1, p1, Landroid/app/ActivityManager$RunningAppProcessInfo;->lru:I
19038     goto :goto_12
19040     :cond_22
19041     const/4 v0, 0x5
19043     if-lt p0, v0, :cond_27
19045     move v0, v1
19047     goto :goto_12
19049     :cond_27
19050     const/4 v0, 0x3
19052     if-lt p0, v0, :cond_2d
19054     const/16 v0, 0xaa
19056     goto :goto_12
19058     :cond_2d
19059     const/4 v0, 0x2
19061     if-lt p0, v0, :cond_33
19063     const/16 v0, 0x82
19065     goto :goto_12
19067     :cond_33
19068     const/4 v0, 0x1
19070     if-lt p0, v0, :cond_39
19072     const/16 v0, 0xc8
19074     goto :goto_12
19076     :cond_39
19077     const/16 v0, 0x64
19079     goto :goto_12
19080 .end method
19082 .method private static processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
19083     .registers 3
19085     if-eqz p0, :cond_8
19087     iget v0, p0, Lcom/android/server/am/ProcessRecord;->pid:I
19089     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
19091     if-ne v0, v1, :cond_b
19093     :cond_8
19094     const-string v0, "system_server"
19096     :goto_a
19097     return-object v0
19099     :cond_b
19100     iget-object v0, p0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
19102     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
19104     and-int/lit8 v0, v0, 0x1
19106     if-eqz v0, :cond_16
19108     const-string v0, "system_app"
19110     goto :goto_a
19112     :cond_16
19113     const-string v0, "data_app"
19115     goto :goto_a
19116 .end method
19118 .method private final processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
19119     .registers 16
19121     const/4 v13, 0x0
19123     const/4 v12, 0x3
19125     const/4 v11, 0x2
19127     const/4 v10, 0x0
19129     const/4 v9, 0x1
19131     iget v4, p1, Lcom/android/server/am/ProcessRecord;->pid:I
19133     const/4 v1, 0x0
19135     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
19137     monitor-enter v7
19139     :try_start_b
19140     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
19142     invoke-virtual {v6, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
19144     move-result-object v3
19146     check-cast v3, Lcom/android/server/am/ProcessRecord;
19148     if-eqz v3, :cond_1f
19150     iget-object v6, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
19152     if-nez v6, :cond_1f
19154     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
19156     invoke-virtual {v6, v4}, Landroid/util/SparseArray;->remove(I)V
19158     const/4 v1, 0x1
19160     :cond_1f
19161     monitor-exit v7
19162     :try_end_20
19163     .catchall {:try_start_b .. :try_end_20} :catchall_c7
19165     if-eqz v1, :cond_120
19167     const-string v6, "ActivityManager"
19169     new-instance v7, Ljava/lang/StringBuilder;
19171     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
19173     const-string v8, "Process "
19175     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19177     move-result-object v7
19179     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
19181     move-result-object v7
19183     const-string v8, " failed to attach"
19185     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19187     move-result-object v7
19189     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19191     move-result-object v7
19193     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19195     const/16 v6, 0x7555
19197     new-array v7, v12, [Ljava/lang/Object;
19199     invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19201     move-result-object v8
19203     aput-object v8, v7, v10
19205     iget v8, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19207     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19209     move-result-object v8
19211     aput-object v8, v7, v9
19213     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
19215     aput-object v8, v7, v11
19217     invoke-static {v6, v7}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
19219     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
19221     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
19223     iget v8, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19225     invoke-virtual {v6, v7, v8}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
19227     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
19229     iget v7, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19231     invoke-virtual {v6, v7}, Landroid/util/SparseArray;->remove(I)V
19233     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
19235     if-ne v6, p1, :cond_76
19237     iput-object v13, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
19239     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
19241     const/16 v7, 0x19
19243     invoke-virtual {v6, v7}, Landroid/os/Handler;->sendEmptyMessage(I)Z
19245     :cond_76
19246     invoke-virtual {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
19248     const/4 v2, 0x0
19250     :goto_7a
19251     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
19253     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
19255     move-result v6
19257     if-ge v2, v6, :cond_ca
19259     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
19261     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
19263     move-result-object v5
19265     check-cast v5, Lcom/android/server/am/ServiceRecord;
19267     iget v6, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19269     iget-object v7, v5, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
19271     iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I
19273     if-ne v6, v7, :cond_9c
19275     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
19277     iget-object v7, v5, Lcom/android/server/am/ServiceRecord;->processName:Ljava/lang/String;
19279     invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19281     move-result v6
19283     if-nez v6, :cond_a0
19285     :cond_9c
19286     iget-object v6, v5, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
19288     if-ne v6, p1, :cond_c4
19290     :cond_a0
19291     const-string v6, "ActivityManager"
19293     new-instance v7, Ljava/lang/StringBuilder;
19295     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
19297     const-string v8, "Forcing bringing down service: "
19299     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19301     move-result-object v7
19303     invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
19305     move-result-object v7
19307     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19309     move-result-object v7
19311     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19313     iput-object v13, v5, Lcom/android/server/am/ServiceRecord;->isolatedProc:Lcom/android/server/am/ProcessRecord;
19315     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
19317     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
19319     add-int/lit8 v2, v2, -0x1
19321     invoke-direct {p0, v5, v9}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
19323     :cond_c4
19324     add-int/lit8 v2, v2, 0x1
19326     goto :goto_7a
19328     :catchall_c7
19329     move-exception v6
19331     :try_start_c8
19332     monitor-exit v7
19333     :try_end_c9
19334     .catchall {:try_start_c8 .. :try_end_c9} :catchall_c7
19336     throw v6
19338     :cond_ca
19339     const/16 v6, 0x7547
19341     const/4 v7, 0x4
19343     new-array v7, v7, [Ljava/lang/Object;
19345     invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19347     move-result-object v8
19349     aput-object v8, v7, v10
19351     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
19353     aput-object v8, v7, v9
19355     iget v8, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
19357     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19359     move-result-object v8
19361     aput-object v8, v7, v11
19363     const-string v8, "start timeout"
19365     aput-object v8, v7, v12
19367     invoke-static {v6, v7}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
19369     invoke-static {v4}, Landroid/os/Process;->killProcessQuiet(I)V
19371     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
19373     if-eqz v6, :cond_10f
19375     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
19377     iget-object v6, v6, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
19379     iget v6, v6, Lcom/android/server/am/ProcessRecord;->pid:I
19381     if-ne v6, v4, :cond_10f
19383     const-string v6, "ActivityManager"
19385     const-string v7, "Unattached app died before backup, skipping"
19387     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19389     :try_start_fe
19390     const-string v6, "backup"
19392     invoke-static {v6}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
19394     move-result-object v6
19396     invoke-static {v6}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
19398     move-result-object v0
19400     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
19402     iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
19404     invoke-interface {v0, v6}, Landroid/app/backup/IBackupManager;->agentDisconnected(Ljava/lang/String;)V
19405     :try_end_10f
19406     .catch Landroid/os/RemoteException; {:try_start_fe .. :try_end_10f} :catch_139
19408     :cond_10f
19409     :goto_10f
19410     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
19412     move-result v6
19414     if-eqz v6, :cond_11f
19416     const-string v6, "ActivityManager"
19418     const-string v7, "Unattached app died before broadcast acknowledged, skipping"
19420     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19422     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->skipPendingBroadcastLocked(I)V
19424     :cond_11f
19425     :goto_11f
19426     return-void
19428     :cond_120
19429     const-string v6, "ActivityManager"
19431     new-instance v7, Ljava/lang/StringBuilder;
19433     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
19435     const-string v8, "Spurious process start timeout - pid not known for "
19437     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19439     move-result-object v7
19441     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
19443     move-result-object v7
19445     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19447     move-result-object v7
19449     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19451     goto :goto_11f
19453     :catch_139
19454     move-exception v6
19456     goto :goto_10f
19457 .end method
19459 .method private static readLastDonePreBootReceivers()Ljava/util/ArrayList;
19460     .registers 15
19461     .annotation system Ldalvik/annotation/Signature;
19462         value = {
19463             "()",
19464             "Ljava/util/ArrayList",
19465             "<",
19466             "Landroid/content/ComponentName;",
19467             ">;"
19468         }
19469     .end annotation
19471     new-instance v9, Ljava/util/ArrayList;
19473     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
19475     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->getCalledPreBootReceiversFile()Ljava/io/File;
19477     move-result-object v5
19479     const/4 v6, 0x0
19481     :try_start_a
19482     new-instance v7, Ljava/io/FileInputStream;
19484     invoke-direct {v7, v5}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
19485     :try_end_f
19486     .catchall {:try_start_a .. :try_end_f} :catchall_7f
19487     .catch Ljava/io/FileNotFoundException; {:try_start_a .. :try_end_f} :catch_90
19488     .catch Ljava/io/IOException; {:try_start_a .. :try_end_f} :catch_6f
19490     :try_start_f
19491     new-instance v3, Ljava/io/DataInputStream;
19493     new-instance v13, Ljava/io/BufferedInputStream;
19495     const/16 v14, 0x800
19497     invoke-direct {v13, v7, v14}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;I)V
19499     invoke-direct {v3, v13}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
19501     invoke-virtual {v3}, Ljava/io/DataInputStream;->readInt()I
19503     move-result v8
19505     const/16 v13, 0x2710
19507     if-ne v8, v13, :cond_68
19509     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
19511     move-result-object v12
19513     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
19515     move-result-object v2
19517     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
19519     move-result-object v0
19521     sget-object v13, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
19523     invoke-virtual {v13, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19525     move-result v13
19527     if-eqz v13, :cond_68
19529     sget-object v13, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String;
19531     invoke-virtual {v13, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19533     move-result v13
19535     if-eqz v13, :cond_68
19537     sget-object v13, Landroid/os/Build$VERSION;->INCREMENTAL:Ljava/lang/String;
19539     invoke-virtual {v13, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19541     move-result v13
19543     if-eqz v13, :cond_68
19545     invoke-virtual {v3}, Ljava/io/DataInputStream;->readInt()I
19547     move-result v10
19549     :goto_4b
19550     if-lez v10, :cond_68
19552     add-int/lit8 v10, v10, -0x1
19554     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
19556     move-result-object v11
19558     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
19560     move-result-object v1
19562     new-instance v13, Landroid/content/ComponentName;
19564     invoke-direct {v13, v11, v1}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
19566     invoke-virtual {v9, v13}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
19567     :try_end_5f
19568     .catchall {:try_start_f .. :try_end_5f} :catchall_8a
19569     .catch Ljava/io/FileNotFoundException; {:try_start_f .. :try_end_5f} :catch_60
19570     .catch Ljava/io/IOException; {:try_start_f .. :try_end_5f} :catch_8d
19572     goto :goto_4b
19574     :catch_60
19575     move-exception v13
19577     move-object v6, v7
19579     :goto_62
19580     if-eqz v6, :cond_67
19582     :try_start_64
19583     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
19584     :try_end_67
19585     .catch Ljava/io/IOException; {:try_start_64 .. :try_end_67} :catch_7d
19587     :cond_67
19588     :goto_67
19589     return-object v9
19591     :cond_68
19592     if-eqz v7, :cond_6d
19594     :try_start_6a
19595     invoke-virtual {v7}, Ljava/io/FileInputStream;->close()V
19596     :try_end_6d
19597     .catch Ljava/io/IOException; {:try_start_6a .. :try_end_6d} :catch_88
19599     :cond_6d
19600     :goto_6d
19601     move-object v6, v7
19603     goto :goto_67
19605     :catch_6f
19606     move-exception v4
19608     :goto_70
19609     :try_start_70
19610     const-string v13, "ActivityManager"
19612     const-string v14, "Failure reading last done pre-boot receivers"
19614     invoke-static {v13, v14, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
19615     :try_end_77
19616     .catchall {:try_start_70 .. :try_end_77} :catchall_7f
19618     if-eqz v6, :cond_67
19620     :try_start_79
19621     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
19622     :try_end_7c
19623     .catch Ljava/io/IOException; {:try_start_79 .. :try_end_7c} :catch_7d
19625     goto :goto_67
19627     :catch_7d
19628     move-exception v13
19630     goto :goto_67
19632     :catchall_7f
19633     move-exception v13
19635     :goto_80
19636     if-eqz v6, :cond_85
19638     :try_start_82
19639     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
19640     :try_end_85
19641     .catch Ljava/io/IOException; {:try_start_82 .. :try_end_85} :catch_86
19643     :cond_85
19644     :goto_85
19645     throw v13
19647     :catch_86
19648     move-exception v14
19650     goto :goto_85
19652     :catch_88
19653     move-exception v13
19655     goto :goto_6d
19657     :catchall_8a
19658     move-exception v13
19660     move-object v6, v7
19662     goto :goto_80
19664     :catch_8d
19665     move-exception v4
19667     move-object v6, v7
19669     goto :goto_70
19671     :catch_90
19672     move-exception v13
19674     goto :goto_62
19675 .end method
19677 .method private final realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;)V
19678     .registers 14
19679     .annotation system Ldalvik/annotation/Throws;
19680         value = {
19681             Landroid/os/RemoteException;
19682         }
19683     .end annotation
19685     const/4 v10, 0x0
19687     const/4 v9, 0x1
19689     const/4 v8, 0x0
19691     iget-object v0, p2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
19693     if-nez v0, :cond_d
19695     new-instance v0, Landroid/os/RemoteException;
19697     invoke-direct {v0}, Landroid/os/RemoteException;-><init>()V
19699     throw v0
19701     :cond_d
19702     iput-object p2, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
19704     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
19706     move-result-wide v0
19708     iput-wide v0, p1, Lcom/android/server/am/ServiceRecord;->lastActivity:J
19710     iput-wide v0, p1, Lcom/android/server/am/ServiceRecord;->restartTime:J
19712     iget-object v0, p2, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
19714     invoke-virtual {v0, p1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
19716     const-string v0, "create"
19718     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
19720     invoke-virtual {p0, p2, v9, v9}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
19722     const/4 v6, 0x0
19724     :try_start_25
19725     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
19727     const/4 v1, 0x0
19729     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->setLength(I)V
19731     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->intent:Landroid/content/Intent$FilterComparison;
19733     invoke-virtual {v0}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
19735     move-result-object v0
19737     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
19739     const/4 v2, 0x1
19741     const/4 v3, 0x0
19743     const/4 v4, 0x1
19745     const/4 v5, 0x0
19747     invoke-virtual/range {v0 .. v5}, Landroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V
19749     const/16 v0, 0x754e
19751     const/4 v1, 0x4
19753     new-array v1, v1, [Ljava/lang/Object;
19755     const/4 v2, 0x0
19757     invoke-static {p1}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
19759     move-result v3
19761     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19763     move-result-object v3
19765     aput-object v3, v1, v2
19767     const/4 v2, 0x1
19769     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
19771     aput-object v3, v1, v2
19773     const/4 v2, 0x2
19775     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
19777     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19779     move-result-object v3
19781     aput-object v3, v1, v2
19783     const/4 v2, 0x3
19785     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
19787     iget v3, v3, Lcom/android/server/am/ProcessRecord;->pid:I
19789     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
19791     move-result-object v3
19793     aput-object v3, v1, v2
19795     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
19797     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
19799     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
19801     move-result-object v1
19803     monitor-enter v1
19804     :try_end_6d
19805     .catchall {:try_start_25 .. :try_end_6d} :catchall_c3
19807     :try_start_6d
19808     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
19810     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked()V
19812     monitor-exit v1
19813     :try_end_73
19814     .catchall {:try_start_6d .. :try_end_73} :catchall_c0
19816     :try_start_73
19817     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
19819     iget-object v0, v0, Landroid/content/pm/ServiceInfo;->packageName:Ljava/lang/String;
19821     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
19823     iget-object v0, p2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
19825     iget-object v1, p1, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
19827     iget-object v2, p1, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
19829     iget-object v2, v2, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
19831     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
19833     move-result-object v2
19835     invoke-interface {v0, p1, v1, v2}, Landroid/app/IApplicationThread;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;)V
19837     invoke-virtual {p1}, Lcom/android/server/am/ServiceRecord;->postNotification()V
19838     :try_end_8c
19839     .catchall {:try_start_73 .. :try_end_8c} :catchall_c3
19841     const/4 v6, 0x1
19843     if-nez v6, :cond_97
19845     iget-object v0, p2, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
19847     invoke-virtual {v0, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
19849     invoke-direct {p0, p1, v8}, Lcom/android/server/am/ActivityManagerService;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
19851     :cond_97
19852     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;)V
19854     iget-boolean v0, p1, Lcom/android/server/am/ServiceRecord;->startRequested:Z
19856     if-eqz v0, :cond_bc
19858     iget-boolean v0, p1, Lcom/android/server/am/ServiceRecord;->callStart:Z
19860     if-eqz v0, :cond_bc
19862     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
19864     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
19866     move-result v0
19868     if-nez v0, :cond_bc
19870     iget-object v7, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
19872     new-instance v0, Lcom/android/server/am/ServiceRecord$StartItem;
19874     invoke-virtual {p1}, Lcom/android/server/am/ServiceRecord;->makeNextStartId()I
19876     move-result v3
19878     move-object v1, p1
19880     move v2, v8
19882     move-object v4, v10
19884     move-object v5, v10
19886     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;)V
19888     invoke-virtual {v7, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
19890     :cond_bc
19891     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;Z)V
19893     return-void
19895     :catchall_c0
19896     move-exception v0
19898     :try_start_c1
19899     monitor-exit v1
19900     :try_end_c2
19901     .catchall {:try_start_c1 .. :try_end_c2} :catchall_c0
19903     :try_start_c2
19904     throw v0
19905     :try_end_c3
19906     .catchall {:try_start_c2 .. :try_end_c3} :catchall_c3
19908     :catchall_c3
19909     move-exception v0
19911     if-nez v6, :cond_ce
19913     iget-object v1, p2, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
19915     invoke-virtual {v1, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
19917     invoke-direct {p0, p1, v8}, Lcom/android/server/am/ActivityManagerService;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
19919     :cond_ce
19920     throw v0
19921 .end method
19923 .method private removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
19924     .registers 9
19926     monitor-enter p0
19928     :try_start_1
19929     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
19931     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
19933     move-result v4
19935     invoke-virtual {v3, p1, v4}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
19937     move-result-object v1
19939     if-nez v1, :cond_f
19941     monitor-exit p0
19943     :goto_e
19944     return-void
19946     :cond_f
19947     new-instance v0, Landroid/content/ComponentName;
19949     iget-object v3, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
19951     iget-object v3, v3, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
19953     iget-object v4, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
19955     iget-object v4, v4, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
19957     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
19959     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
19961     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
19963     move-result v4
19965     invoke-virtual {v3, v0, v4}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
19967     move-result-object v2
19969     invoke-virtual {v2}, Lcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
19971     move-result v3
19973     if-eqz v3, :cond_63
19975     invoke-virtual {v2, p2}, Lcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
19977     move-result v3
19979     if-eqz v3, :cond_3a
19981     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
19983     :goto_35
19984     monitor-exit p0
19986     goto :goto_e
19988     :catchall_37
19989     move-exception v3
19991     monitor-exit p0
19992     :try_end_39
19993     .catchall {:try_start_1 .. :try_end_39} :catchall_37
19995     throw v3
19997     :cond_3a
19998     :try_start_3a
19999     const-string v3, "ActivityManager"
20001     new-instance v4, Ljava/lang/StringBuilder;
20003     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
20005     const-string v5, "Attmpt to remove content provider "
20007     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20009     move-result-object v4
20011     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
20013     move-result-object v4
20015     const-string v5, " with no external reference for token: "
20017     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20019     move-result-object v4
20021     invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
20023     move-result-object v4
20025     const-string v5, "."
20027     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20029     move-result-object v4
20031     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20033     move-result-object v4
20035     invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
20037     goto :goto_35
20039     :cond_63
20040     const-string v3, "ActivityManager"
20042     new-instance v4, Ljava/lang/StringBuilder;
20044     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
20046     const-string v5, "Attmpt to remove content provider: "
20048     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20050     move-result-object v4
20052     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
20054     move-result-object v4
20056     const-string v5, " with no external references."
20058     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20060     move-result-object v4
20062     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20064     move-result-object v4
20066     invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
20067     :try_end_81
20068     .catchall {:try_start_3a .. :try_end_81} :catchall_37
20070     goto :goto_35
20071 .end method
20073 .method private final removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
20074     .registers 16
20076     const/4 v11, 0x1
20078     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
20080     invoke-virtual {v6, p2}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
20082     move-result v3
20084     if-eqz v3, :cond_b
20086     if-eqz p3, :cond_41
20088     :cond_b
20089     monitor-enter p2
20091     const/4 v6, 0x0
20093     :try_start_d
20094     iput-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
20096     invoke-virtual {p2}, Ljava/lang/Object;->notifyAll()V
20098     monitor-exit p2
20099     :try_end_13
20100     .catchall {:try_start_d .. :try_end_13} :catchall_3e
20102     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
20104     iget-object v7, p2, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
20106     iget v8, p2, Lcom/android/server/am/ContentProviderRecord;->uid:I
20108     invoke-static {v8}, Landroid/os/UserId;->getUserId(I)I
20110     move-result v8
20112     invoke-virtual {v6, v7, v8}, Lcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
20114     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
20116     iget-object v6, v6, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
20118     const-string v7, ";"
20120     invoke-virtual {v6, v7}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
20122     move-result-object v5
20124     const/4 v4, 0x0
20126     :goto_2b
20127     array-length v6, v5
20129     if-ge v4, v6, :cond_41
20131     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
20133     aget-object v7, v5, v4
20135     iget v8, p2, Lcom/android/server/am/ContentProviderRecord;->uid:I
20137     invoke-static {v8}, Landroid/os/UserId;->getUserId(I)I
20139     move-result v8
20141     invoke-virtual {v6, v7, v8}, Lcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
20143     add-int/lit8 v4, v4, 0x1
20145     goto :goto_2b
20147     :catchall_3e
20148     move-exception v6
20150     :try_start_3f
20151     monitor-exit p2
20152     :try_end_40
20153     .catchall {:try_start_3f .. :try_end_40} :catchall_3e
20155     throw v6
20157     :cond_41
20158     const/4 v2, 0x0
20160     :goto_42
20161     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
20163     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
20165     move-result v6
20167     if-ge v2, v6, :cond_122
20169     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
20171     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
20173     move-result-object v1
20175     check-cast v1, Lcom/android/server/am/ContentProviderConnection;
20177     iget-boolean v6, v1, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
20179     if-eqz v6, :cond_5d
20181     if-eqz v3, :cond_5d
20183     if-nez p3, :cond_5d
20185     :cond_5a
20186     :goto_5a
20187     add-int/lit8 v2, v2, 0x1
20189     goto :goto_42
20191     :cond_5d
20192     iget-object v0, v1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
20194     iput-boolean v11, v1, Lcom/android/server/am/ContentProviderConnection;->dead:Z
20196     iget v6, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
20198     if-lez v6, :cond_fd
20200     iget-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
20202     if-nez v6, :cond_5a
20204     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20206     if-eqz v6, :cond_5a
20208     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20210     if-eqz v6, :cond_5a
20212     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20214     sget v7, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
20216     if-eq v6, v7, :cond_5a
20218     const-string v7, "ActivityManager"
20220     new-instance v6, Ljava/lang/StringBuilder;
20222     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
20224     const-string v8, "Kill "
20226     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20228     move-result-object v6
20230     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20232     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20234     move-result-object v6
20236     const-string v8, " (pid "
20238     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20240     move-result-object v6
20242     iget v8, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20244     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
20246     move-result-object v6
20248     const-string v8, "): provider "
20250     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20252     move-result-object v6
20254     iget-object v8, p2, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
20256     iget-object v8, v8, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
20258     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20260     move-result-object v6
20262     const-string v8, " in dying process "
20264     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20266     move-result-object v8
20268     if-eqz p1, :cond_fa
20270     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20272     :goto_ae
20273     invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20275     move-result-object v6
20277     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20279     move-result-object v6
20281     invoke-static {v7, v6}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
20283     const/16 v6, 0x7547
20285     const/4 v7, 0x4
20287     new-array v7, v7, [Ljava/lang/Object;
20289     const/4 v8, 0x0
20291     iget v9, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20293     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
20295     move-result-object v9
20297     aput-object v9, v7, v8
20299     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20301     aput-object v8, v7, v11
20303     const/4 v8, 0x2
20305     iget v9, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
20307     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
20309     move-result-object v9
20311     aput-object v9, v7, v8
20313     const/4 v8, 0x3
20315     new-instance v9, Ljava/lang/StringBuilder;
20317     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
20319     const-string v10, "dying provider "
20321     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20323     move-result-object v9
20325     iget-object v10, p2, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
20327     invoke-virtual {v10}, Landroid/content/ComponentName;->toShortString()Ljava/lang/String;
20329     move-result-object v10
20331     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20333     move-result-object v9
20335     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20337     move-result-object v9
20339     aput-object v9, v7, v8
20341     invoke-static {v6, v7}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
20343     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20345     invoke-static {v6}, Landroid/os/Process;->killProcessQuiet(I)V
20347     goto/16 :goto_5a
20349     :cond_fa
20350     const-string v6, "??"
20352     goto :goto_ae
20354     :cond_fd
20355     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20357     if-eqz v6, :cond_5a
20359     iget-object v6, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
20361     iget-object v6, v6, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
20363     if-eqz v6, :cond_5a
20365     :try_start_107
20366     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20368     iget-object v7, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
20370     iget-object v7, v7, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
20372     invoke-interface {v7}, Landroid/content/IContentProvider;->asBinder()Landroid/os/IBinder;
20374     move-result-object v7
20376     invoke-interface {v6, v7}, Landroid/app/IApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V
20377     :try_end_114
20378     .catch Landroid/os/RemoteException; {:try_start_107 .. :try_end_114} :catch_12c
20380     :goto_114
20381     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
20383     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
20385     iget-object v6, v1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
20387     iget-object v6, v6, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
20389     invoke-virtual {v6, v1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
20391     goto/16 :goto_5a
20393     :cond_122
20394     if-eqz v3, :cond_12b
20396     if-eqz p3, :cond_12b
20398     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
20400     invoke-virtual {v6, p2}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
20402     :cond_12b
20403     return v3
20405     :catch_12c
20406     move-exception v6
20408     goto :goto_114
20409 .end method
20411 .method private final removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
20412     .registers 12
20414     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20416     iget v3, p1, Lcom/android/server/am/ProcessRecord;->uid:I
20418     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
20420     invoke-virtual {v4, v0, v3}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
20422     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
20424     iget v5, p1, Lcom/android/server/am/ProcessRecord;->uid:I
20426     invoke-virtual {v4, v5}, Landroid/util/SparseArray;->remove(I)V
20428     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
20430     if-ne v4, p1, :cond_1e
20432     const/4 v4, 0x0
20434     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
20436     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20438     const/16 v5, 0x19
20440     invoke-virtual {v4, v5}, Landroid/os/Handler;->sendEmptyMessage(I)Z
20442     :cond_1e
20443     const/4 v1, 0x0
20445     iget v4, p1, Lcom/android/server/am/ProcessRecord;->pid:I
20447     if-lez v4, :cond_83
20449     iget v4, p1, Lcom/android/server/am/ProcessRecord;->pid:I
20451     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
20453     if-eq v4, v5, :cond_83
20455     iget v2, p1, Lcom/android/server/am/ProcessRecord;->pid:I
20457     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20459     monitor-enter v5
20461     :try_start_2e
20462     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20464     invoke-virtual {v4, v2}, Landroid/util/SparseArray;->remove(I)V
20466     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20468     const/16 v6, 0x14
20470     invoke-virtual {v4, v6, p1}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
20472     monitor-exit v5
20473     :try_end_3b
20474     .catchall {:try_start_2e .. :try_end_3b} :catchall_7e
20476     const-string v4, "ActivityManager"
20478     new-instance v5, Ljava/lang/StringBuilder;
20480     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
20482     const-string v6, "Killing proc "
20484     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20486     move-result-object v5
20488     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
20490     move-result-object v6
20492     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20494     move-result-object v5
20496     const-string v6, ": "
20498     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20500     move-result-object v5
20502     invoke-virtual {v5, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20504     move-result-object v5
20506     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20508     move-result-object v5
20510     invoke-static {v4, v5}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
20512     const/4 v4, 0x1
20514     invoke-direct {p0, p1, v4, p3}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
20516     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
20518     invoke-virtual {v4, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
20520     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
20522     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->persistent:Z
20524     if-eqz v4, :cond_7d
20526     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->isolated:Z
20528     if-nez v4, :cond_7d
20530     if-nez p2, :cond_81
20532     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20534     const/4 v5, 0x0
20536     invoke-virtual {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
20538     :cond_7d
20539     :goto_7d
20540     return v1
20542     :catchall_7e
20543     move-exception v4
20545     :try_start_7f
20546     monitor-exit v5
20547     :try_end_80
20548     .catchall {:try_start_7f .. :try_end_80} :catchall_7e
20550     throw v4
20552     :cond_81
20553     const/4 v1, 0x1
20555     goto :goto_7d
20557     :cond_83
20558     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
20560     invoke-virtual {v4, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
20562     goto :goto_7d
20563 .end method
20565 .method private reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
20566     .registers 8
20568     const-string v2, "ActivityManager"
20570     invoke-static {v2, p3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
20572     if-eqz p1, :cond_1c
20574     :try_start_7
20575     new-instance v1, Landroid/os/Bundle;
20577     invoke-direct {v1}, Landroid/os/Bundle;-><init>()V
20579     const-string v2, "id"
20581     const-string v3, "ActivityManagerService"
20583     invoke-virtual {v1, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
20585     const-string v2, "Error"
20587     invoke-virtual {v1, v2, p3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
20589     const/4 v2, -0x1
20591     invoke-interface {p1, p2, v2, v1}, Landroid/app/IInstrumentationWatcher;->instrumentationStatus(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
20592     :try_end_1c
20593     .catch Landroid/os/RemoteException; {:try_start_7 .. :try_end_1c} :catch_1d
20595     :cond_1c
20596     :goto_1c
20597     return-void
20599     :catch_1d
20600     move-exception v0
20602     const-string v2, "ActivityManager"
20604     invoke-static {v2, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
20606     goto :goto_1c
20607 .end method
20609 .method private final requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Z)Z
20610     .registers 9
20612     const/4 v2, 0x1
20614     const/4 v1, 0x0
20616     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
20618     if-eqz v3, :cond_c
20620     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
20622     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20624     if-nez v3, :cond_d
20626     :cond_c
20627     :goto_c
20628     return v1
20630     :cond_d
20631     iget-boolean v3, p2, Lcom/android/server/am/IntentBindRecord;->requested:Z
20633     if-eqz v3, :cond_13
20635     if-eqz p3, :cond_38
20637     :cond_13
20638     iget-object v3, p2, Lcom/android/server/am/IntentBindRecord;->apps:Ljava/util/HashMap;
20640     invoke-virtual {v3}, Ljava/util/HashMap;->size()I
20642     move-result v3
20644     if-lez v3, :cond_38
20646     :try_start_1b
20647     const-string v3, "bind"
20649     invoke-direct {p0, p1, v3}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
20651     iget-object v3, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
20653     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20655     iget-object v4, p2, Lcom/android/server/am/IntentBindRecord;->intent:Landroid/content/Intent$FilterComparison;
20657     invoke-virtual {v4}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
20659     move-result-object v4
20661     invoke-interface {v3, p1, v4, p3}, Landroid/app/IApplicationThread;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;Z)V
20663     if-nez p3, :cond_32
20665     const/4 v3, 0x1
20667     iput-boolean v3, p2, Lcom/android/server/am/IntentBindRecord;->requested:Z
20669     :cond_32
20670     const/4 v3, 0x1
20672     iput-boolean v3, p2, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
20674     const/4 v3, 0x0
20676     iput-boolean v3, p2, Lcom/android/server/am/IntentBindRecord;->doRebind:Z
20677     :try_end_38
20678     .catch Landroid/os/RemoteException; {:try_start_1b .. :try_end_38} :catch_3a
20680     :cond_38
20681     move v1, v2
20683     goto :goto_c
20685     :catch_3a
20686     move-exception v0
20688     goto :goto_c
20689 .end method
20691 .method private final requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;)V
20692     .registers 5
20694     iget-object v2, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
20696     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
20698     move-result-object v2
20700     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
20702     move-result-object v0
20704     :cond_a
20705     invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
20707     move-result v2
20709     if-eqz v2, :cond_1d
20711     invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
20713     move-result-object v1
20715     check-cast v1, Lcom/android/server/am/IntentBindRecord;
20717     const/4 v2, 0x0
20719     invoke-direct {p0, p1, v1, v2}, Lcom/android/server/am/ActivityManagerService;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Z)Z
20721     move-result v2
20723     if-nez v2, :cond_a
20725     :cond_1d
20726     return-void
20727 .end method
20729 .method private final resumedAppLocked()Lcom/android/server/am/ActivityRecord;
20730     .registers 4
20732     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
20734     iget-object v0, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
20736     if-eqz v0, :cond_a
20738     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
20740     if-nez v1, :cond_1b
20742     :cond_a
20743     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
20745     iget-object v0, v1, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
20747     if-eqz v0, :cond_14
20749     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
20751     if-nez v1, :cond_1b
20753     :cond_14
20754     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
20756     const/4 v2, 0x0
20758     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
20760     move-result-object v0
20762     :cond_1b
20763     return-object v0
20764 .end method
20766 .method private retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
20767     .registers 28
20769     const/4 v3, 0x0
20771     invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
20773     move-result-object v4
20775     if-eqz v4, :cond_15
20777     move-object/from16 v0, p0
20779     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
20781     invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
20783     move-result-object v10
20785     move/from16 v0, p5
20787     invoke-virtual {v4, v10, v0}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
20789     move-result-object v3
20791     :cond_15
20792     if-nez v3, :cond_28
20794     new-instance v7, Landroid/content/Intent$FilterComparison;
20796     move-object/from16 v0, p1
20798     invoke-direct {v7, v0}, Landroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
20800     move-object/from16 v0, p0
20802     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
20804     move/from16 v0, p5
20806     invoke-virtual {v4, v7, v0}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByIntent(Landroid/content/Intent$FilterComparison;I)Lcom/android/server/am/ServiceRecord;
20808     move-result-object v3
20810     :cond_28
20811     if-nez v3, :cond_127
20813     :try_start_2a
20814     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
20816     move-result-object v4
20818     const/16 v10, 0x400
20820     move-object/from16 v0, p1
20822     move-object/from16 v1, p2
20824     move/from16 v2, p5
20826     invoke-interface {v4, v0, v1, v10, v2}, Landroid/content/pm/IPackageManager;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
20828     move-result-object v20
20830     if-eqz v20, :cond_64
20832     move-object/from16 v0, v20
20834     iget-object v8, v0, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;
20836     :goto_40
20837     if-nez v8, :cond_66
20839     const-string v4, "ActivityManager"
20841     new-instance v10, Ljava/lang/StringBuilder;
20843     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
20845     const-string v11, "Unable to start service "
20847     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20849     move-result-object v10
20851     move-object/from16 v0, p1
20853     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
20855     move-result-object v10
20857     const-string v11, ": not found"
20859     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20861     move-result-object v10
20863     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20865     move-result-object v10
20867     invoke-static {v4, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
20869     const/4 v4, 0x0
20871     :goto_63
20872     return-object v4
20874     :cond_64
20875     const/4 v8, 0x0
20877     goto :goto_40
20879     :cond_66
20880     if-lez p5, :cond_82
20882     iget-object v4, v8, Landroid/content/pm/ServiceInfo;->processName:Ljava/lang/String;
20884     iget-object v10, v8, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
20886     move-object/from16 v0, p0
20888     invoke-virtual {v0, v4, v10}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
20890     move-result v4
20892     if-eqz v4, :cond_76
20894     const/16 p5, 0x0
20896     :cond_76
20897     iget-object v4, v8, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
20899     move-object/from16 v0, p0
20901     move/from16 v1, p5
20903     invoke-direct {v0, v4, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
20905     move-result-object v4
20907     iput-object v4, v8, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
20909     :cond_82
20910     new-instance v6, Landroid/content/ComponentName;
20912     iget-object v4, v8, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
20914     iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
20916     iget-object v10, v8, Landroid/content/pm/ServiceInfo;->name:Ljava/lang/String;
20918     invoke-direct {v6, v4, v10}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
20920     move-object/from16 v0, p0
20922     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
20924     move/from16 v0, p5
20926     invoke-virtual {v4, v6, v0}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
20927     :try_end_96
20928     .catch Landroid/os/RemoteException; {:try_start_2a .. :try_end_96} :catch_1f9
20930     move-result-object v19
20932     if-nez v19, :cond_1fc
20934     :try_start_99
20935     new-instance v7, Landroid/content/Intent$FilterComparison;
20937     invoke-virtual/range {p1 .. p1}, Landroid/content/Intent;->cloneFilter()Landroid/content/Intent;
20939     move-result-object v4
20941     invoke-direct {v7, v4}, Landroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
20943     new-instance v9, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;
20945     const/4 v4, 0x0
20947     move-object/from16 v0, p0
20949     invoke-direct {v9, v0, v4}, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService$1;)V
20951     const/4 v5, 0x0
20953     move-object/from16 v0, p0
20955     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
20957     invoke-virtual {v4}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
20959     move-result-object v21
20961     monitor-enter v21
20962     :try_end_b4
20963     .catch Landroid/os/RemoteException; {:try_start_99 .. :try_end_b4} :catch_124
20965     :try_start_b4
20966     iget-object v4, v8, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
20968     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
20970     iget-object v10, v8, Landroid/content/pm/ServiceInfo;->packageName:Ljava/lang/String;
20972     iget-object v11, v8, Landroid/content/pm/ServiceInfo;->name:Ljava/lang/String;
20974     move-object/from16 v0, v21
20976     invoke-virtual {v0, v4, v10, v11}, Lcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
20978     move-result-object v5
20980     monitor-exit v21
20981     :try_end_c3
20982     .catchall {:try_start_b4 .. :try_end_c3} :catchall_121
20984     :try_start_c3
20985     new-instance v3, Lcom/android/server/am/ServiceRecord;
20987     move-object/from16 v4, p0
20989     invoke-direct/range {v3 .. v9}, Lcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;Ljava/lang/Runnable;)V
20990     :try_end_ca
20991     .catch Landroid/os/RemoteException; {:try_start_c3 .. :try_end_ca} :catch_124
20993     :try_start_ca
20994     invoke-virtual {v9, v3}, Lcom/android/server/am/ActivityManagerService$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
20996     move-object/from16 v0, p0
20998     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
21000     iget-object v10, v3, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
21002     iget v10, v10, Landroid/content/pm/ApplicationInfo;->uid:I
21004     invoke-static {v10}, Landroid/os/UserId;->getUserId(I)I
21006     move-result v10
21008     invoke-virtual {v4, v6, v10, v3}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->putServiceByName(Landroid/content/ComponentName;ILcom/android/server/am/ServiceRecord;)V
21010     move-object/from16 v0, p0
21012     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
21014     iget-object v10, v3, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
21016     iget v10, v10, Landroid/content/pm/ApplicationInfo;->uid:I
21018     invoke-static {v10}, Landroid/os/UserId;->getUserId(I)I
21020     move-result v10
21022     invoke-virtual {v4, v7, v10, v3}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->putServiceByIntent(Landroid/content/Intent$FilterComparison;ILcom/android/server/am/ServiceRecord;)V
21024     move-object/from16 v0, p0
21026     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
21028     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
21030     move-result v16
21032     const/16 v17, 0x0
21034     :goto_f5
21035     move/from16 v0, v17
21037     move/from16 v1, v16
21039     if-ge v0, v1, :cond_127
21041     move-object/from16 v0, p0
21043     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
21045     move/from16 v0, v17
21047     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
21049     move-result-object v18
21051     check-cast v18, Lcom/android/server/am/ServiceRecord;
21053     move-object/from16 v0, v18
21055     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
21057     invoke-virtual {v4, v6}, Landroid/content/ComponentName;->equals(Ljava/lang/Object;)Z
21059     move-result v4
21061     if-eqz v4, :cond_11e
21063     move-object/from16 v0, p0
21065     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
21067     move/from16 v0, v17
21069     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
21070     :try_end_11a
21071     .catch Landroid/os/RemoteException; {:try_start_ca .. :try_end_11a} :catch_1f9
21073     add-int/lit8 v17, v17, -0x1
21075     add-int/lit8 v16, v16, -0x1
21077     :cond_11e
21078     add-int/lit8 v17, v17, 0x1
21080     goto :goto_f5
21082     :catchall_121
21083     move-exception v4
21085     :try_start_122
21086     monitor-exit v21
21087     :try_end_123
21088     .catchall {:try_start_122 .. :try_end_123} :catchall_121
21090     :try_start_123
21091     throw v4
21092     :try_end_124
21093     .catch Landroid/os/RemoteException; {:try_start_123 .. :try_end_124} :catch_124
21095     :catch_124
21096     move-exception v4
21098     move-object/from16 v3, v19
21100     :cond_127
21101     :goto_127
21102     if-eqz v3, :cond_1f6
21104     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
21106     iget-object v4, v3, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
21108     iget v14, v4, Landroid/content/pm/ApplicationInfo;->uid:I
21110     iget-boolean v15, v3, Lcom/android/server/am/ServiceRecord;->exported:Z
21112     move-object/from16 v10, p0
21114     move/from16 v12, p3
21116     move/from16 v13, p4
21118     invoke-virtual/range {v10 .. v15}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
21120     move-result v4
21122     if-eqz v4, :cond_1ec
21124     iget-boolean v4, v3, Lcom/android/server/am/ServiceRecord;->exported:Z
21126     if-nez v4, :cond_1a2
21128     const-string v4, "ActivityManager"
21130     new-instance v10, Ljava/lang/StringBuilder;
21132     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
21134     const-string v11, "Permission Denial: Accessing service "
21136     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21138     move-result-object v10
21140     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
21142     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
21144     move-result-object v10
21146     const-string v11, " from pid="
21148     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21150     move-result-object v10
21152     move/from16 v0, p3
21154     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21156     move-result-object v10
21158     const-string v11, ", uid="
21160     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21162     move-result-object v10
21164     move/from16 v0, p4
21166     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21168     move-result-object v10
21170     const-string v11, " that is not exported from uid "
21172     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21174     move-result-object v10
21176     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
21178     iget v11, v11, Landroid/content/pm/ApplicationInfo;->uid:I
21180     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21182     move-result-object v10
21184     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21186     move-result-object v10
21188     invoke-static {v4, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
21190     new-instance v4, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
21192     const/4 v10, 0x0
21194     new-instance v11, Ljava/lang/StringBuilder;
21196     invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
21198     const-string v12, "not exported from uid "
21200     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21202     move-result-object v11
21204     iget-object v12, v3, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
21206     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
21208     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21210     move-result-object v11
21212     invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21214     move-result-object v11
21216     move-object/from16 v0, p0
21218     invoke-direct {v4, v0, v10, v11}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
21220     goto/16 :goto_63
21222     :cond_1a2
21223     const-string v4, "ActivityManager"
21225     new-instance v10, Ljava/lang/StringBuilder;
21227     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
21229     const-string v11, "Permission Denial: Accessing service "
21231     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21233     move-result-object v10
21235     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
21237     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
21239     move-result-object v10
21241     const-string v11, " from pid="
21243     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21245     move-result-object v10
21247     move/from16 v0, p3
21249     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21251     move-result-object v10
21253     const-string v11, ", uid="
21255     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21257     move-result-object v10
21259     move/from16 v0, p4
21261     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21263     move-result-object v10
21265     const-string v11, " requires "
21267     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21269     move-result-object v10
21271     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
21273     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21275     move-result-object v10
21277     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21279     move-result-object v10
21281     invoke-static {v4, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
21283     new-instance v4, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
21285     const/4 v10, 0x0
21287     iget-object v11, v3, Lcom/android/server/am/ServiceRecord;->permission:Ljava/lang/String;
21289     move-object/from16 v0, p0
21291     invoke-direct {v4, v0, v10, v11}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
21293     goto/16 :goto_63
21295     :cond_1ec
21296     new-instance v4, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
21298     const/4 v10, 0x0
21300     move-object/from16 v0, p0
21302     invoke-direct {v4, v0, v3, v10}, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
21304     goto/16 :goto_63
21306     :cond_1f6
21307     const/4 v4, 0x0
21309     goto/16 :goto_63
21311     :catch_1f9
21312     move-exception v4
21314     goto/16 :goto_127
21316     :cond_1fc
21317     move-object/from16 v3, v19
21319     goto/16 :goto_127
21320 .end method
21322 .method private retrieveSettings()V
21323     .registers 9
21325     const/4 v5, 0x1
21327     const/4 v6, 0x0
21329     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
21331     invoke-virtual {v7}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
21333     move-result-object v3
21335     const-string v7, "debug_app"
21337     invoke-static {v3, v7}, Landroid/provider/Settings$System;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
21339     move-result-object v2
21341     const-string v7, "wait_for_debugger"
21343     invoke-static {v3, v7, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
21345     move-result v7
21347     if-eqz v7, :cond_3b
21349     move v4, v5
21351     :goto_17
21352     const-string v7, "always_finish_activities"
21354     invoke-static {v3, v7, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
21356     move-result v7
21358     if-eqz v7, :cond_3d
21360     move v0, v5
21362     :goto_20
21363     new-instance v1, Landroid/content/res/Configuration;
21365     invoke-direct {v1}, Landroid/content/res/Configuration;-><init>()V
21367     invoke-static {v3, v1}, Landroid/provider/Settings$System;->getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V
21369     monitor-enter p0
21371     :try_start_29
21372     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
21374     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
21376     iput-boolean v4, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
21378     iput-boolean v4, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
21380     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
21382     const/4 v5, 0x0
21384     const/4 v6, 0x0
21386     const/4 v7, 0x1
21388     invoke-virtual {p0, v1, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
21390     monitor-exit p0
21392     return-void
21394     :cond_3b
21395     move v4, v6
21397     goto :goto_17
21399     :cond_3d
21400     move v0, v6
21402     goto :goto_20
21404     :catchall_3f
21405     move-exception v5
21407     monitor-exit p0
21408     :try_end_41
21409     .catchall {:try_start_29 .. :try_end_41} :catchall_3f
21411     throw v5
21412 .end method
21414 .method private revokeUriPermissionLocked(ILandroid/net/Uri;I)V
21415     .registers 24
21417     and-int/lit8 p3, p3, 0x3
21419     if-nez p3, :cond_5
21421     :cond_4
21422     :goto_4
21423     return-void
21425     :cond_5
21426     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
21428     move-result-object v2
21430     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
21432     move-result-object v10
21434     const/4 v3, 0x0
21436     invoke-static/range {p1 .. p1}, Landroid/os/UserId;->getUserId(I)I
21438     move-result v19
21440     move-object/from16 v0, p0
21442     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
21444     move/from16 v0, v19
21446     invoke-virtual {v1, v10, v0}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
21448     move-result-object v11
21450     if-eqz v11, :cond_3f
21452     iget-object v3, v11, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
21454     :goto_20
21455     if-nez v3, :cond_48
21457     const-string v1, "ActivityManager"
21459     new-instance v4, Ljava/lang/StringBuilder;
21461     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
21463     const-string v5, "No content provider found for permission revoke: "
21465     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21467     move-result-object v4
21469     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
21471     move-result-object v5
21473     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21475     move-result-object v4
21477     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21479     move-result-object v4
21481     invoke-static {v1, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
21483     goto :goto_4
21485     :cond_3f
21486     const/16 v1, 0x800
21488     :try_start_41
21489     move/from16 v0, v19
21491     invoke-interface {v2, v10, v1, v0}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
21492     :try_end_46
21493     .catch Landroid/os/RemoteException; {:try_start_41 .. :try_end_46} :catch_10b
21495     move-result-object v3
21497     goto :goto_20
21499     :cond_48
21500     move-object/from16 v1, p0
21502     move-object/from16 v4, p2
21504     move/from16 v5, p1
21506     move/from16 v6, p3
21508     invoke-direct/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
21510     move-result v1
21512     if-nez v1, :cond_7d
21514     new-instance v1, Ljava/lang/SecurityException;
21516     new-instance v4, Ljava/lang/StringBuilder;
21518     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
21520     const-string v5, "Uid "
21522     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21524     move-result-object v4
21526     move/from16 v0, p1
21528     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21530     move-result-object v4
21532     const-string v5, " does not have permission to uri "
21534     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21536     move-result-object v4
21538     move-object/from16 v0, p2
21540     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
21542     move-result-object v4
21544     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21546     move-result-object v4
21548     invoke-direct {v1, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
21550     throw v1
21552     :cond_7d
21553     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
21555     move-result-object v9
21557     if-eqz v9, :cond_4
21559     invoke-interface {v9}, Ljava/util/List;->size()I
21561     move-result v8
21563     move-object/from16 v0, p0
21565     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
21567     invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
21569     move-result v7
21571     const/4 v12, 0x0
21573     :goto_90
21574     if-ge v12, v7, :cond_4
21576     move-object/from16 v0, p0
21578     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
21580     invoke-virtual {v1, v12}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
21582     move-result-object v16
21584     check-cast v16, Ljava/util/HashMap;
21586     invoke-virtual/range {v16 .. v16}, Ljava/util/HashMap;->values()Ljava/util/Collection;
21588     move-result-object v1
21590     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
21592     move-result-object v13
21594     :cond_a4
21595     :goto_a4
21596     invoke-interface {v13}, Ljava/util/Iterator;->hasNext()Z
21598     move-result v1
21600     if-eqz v1, :cond_ef
21602     invoke-interface {v13}, Ljava/util/Iterator;->next()Ljava/lang/Object;
21604     move-result-object v15
21606     check-cast v15, Lcom/android/server/am/UriPermission;
21608     iget-object v0, v15, Lcom/android/server/am/UriPermission;->uri:Landroid/net/Uri;
21610     move-object/from16 v18, v0
21612     invoke-virtual/range {v18 .. v18}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
21614     move-result-object v1
21616     invoke-virtual {v10, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
21618     move-result v1
21620     if-eqz v1, :cond_a4
21622     invoke-virtual/range {v18 .. v18}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
21624     move-result-object v17
21626     if-eqz v17, :cond_a4
21628     invoke-interface/range {v17 .. v17}, Ljava/util/List;->size()I
21630     move-result v1
21632     if-lt v1, v8, :cond_a4
21634     const/4 v14, 0x0
21636     :goto_cb
21637     if-ge v14, v8, :cond_e2
21639     invoke-interface {v9, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
21641     move-result-object v1
21643     check-cast v1, Ljava/lang/String;
21645     move-object/from16 v0, v17
21647     invoke-interface {v0, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
21649     move-result-object v4
21651     invoke-virtual {v1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
21653     move-result v1
21655     if-eqz v1, :cond_a4
21657     add-int/lit8 v14, v14, 0x1
21659     goto :goto_cb
21661     :cond_e2
21662     move/from16 v0, p3
21664     invoke-virtual {v15, v0}, Lcom/android/server/am/UriPermission;->clearModes(I)V
21666     iget v1, v15, Lcom/android/server/am/UriPermission;->modeFlags:I
21668     if-nez v1, :cond_a4
21670     invoke-interface {v13}, Ljava/util/Iterator;->remove()V
21672     goto :goto_a4
21674     :cond_ef
21675     invoke-virtual/range {v16 .. v16}, Ljava/util/HashMap;->size()I
21677     move-result v1
21679     if-nez v1, :cond_108
21681     move-object/from16 v0, p0
21683     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
21685     move-object/from16 v0, p0
21687     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
21689     invoke-virtual {v4, v12}, Landroid/util/SparseArray;->keyAt(I)I
21691     move-result v4
21693     invoke-virtual {v1, v4}, Landroid/util/SparseArray;->remove(I)V
21695     add-int/lit8 v7, v7, -0x1
21697     add-int/lit8 v12, v12, -0x1
21699     :cond_108
21700     add-int/lit8 v12, v12, 0x1
21702     goto :goto_90
21704     :catch_10b
21705     move-exception v1
21707     goto/16 :goto_20
21708 .end method
21710 .method private saveLocaleLocked(Ljava/util/Locale;ZZ)V
21711     .registers 6
21713     if-eqz p2, :cond_14
21715     const-string v0, "user.language"
21717     invoke-virtual {p1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
21719     move-result-object v1
21721     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21723     const-string v0, "user.region"
21725     invoke-virtual {p1}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
21727     move-result-object v1
21729     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21731     :cond_14
21732     if-eqz p3, :cond_31
21734     const-string v0, "persist.sys.language"
21736     invoke-virtual {p1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
21738     move-result-object v1
21740     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21742     const-string v0, "persist.sys.country"
21744     invoke-virtual {p1}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
21746     move-result-object v1
21748     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21750     const-string v0, "persist.sys.localevar"
21752     invoke-virtual {p1}, Ljava/util/Locale;->getVariant()Ljava/lang/String;
21754     move-result-object v1
21756     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21758     :cond_31
21759     return-void
21760 .end method
21762 .method private saveThemeResourceLocked(Landroid/content/res/CustomTheme;Z)V
21763     .registers 5
21765     if-eqz p2, :cond_14
21767     const-string v0, "persist.sys.themeId"
21769     invoke-virtual {p1}, Landroid/content/res/CustomTheme;->getThemeId()Ljava/lang/String;
21771     move-result-object v1
21773     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21775     const-string v0, "persist.sys.themePackageName"
21777     invoke-virtual {p1}, Landroid/content/res/CustomTheme;->getThemePackageName()Ljava/lang/String;
21779     move-result-object v1
21781     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
21783     :cond_14
21784     return-void
21785 .end method
21787 .method private static scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
21788     .registers 7
21790     if-eqz p0, :cond_14
21792     move-object v1, p0
21794     array-length v3, v1
21796     const/4 v2, 0x0
21798     :goto_5
21799     if-ge v2, v3, :cond_14
21801     aget-object v0, v1, v2
21803     invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
21805     move-result v4
21807     if-eqz v4, :cond_11
21809     const/4 v4, 0x1
21811     :goto_10
21812     return v4
21814     :cond_11
21815     add-int/lit8 v2, v2, 0x1
21817     goto :goto_5
21819     :cond_14
21820     const/4 v4, 0x0
21822     goto :goto_10
21823 .end method
21825 .method private final scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
21826     .registers 26
21828     const/4 v4, 0x0
21830     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
21832     move-result-wide v10
21834     const-wide/16 v8, 0x1388
21836     const-wide/32 v14, 0xea60
21838     move-object/from16 v0, p1
21840     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
21842     move-object/from16 v17, v0
21844     move-object/from16 v0, v17
21846     iget-object v0, v0, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
21848     move-object/from16 v17, v0
21850     move-object/from16 v0, v17
21852     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
21854     move/from16 v17, v0
21856     and-int/lit8 v17, v17, 0x8
21858     if-eqz v17, :cond_24
21860     const-wide/16 v17, 0x4
21862     div-long v8, v8, v17
21864     :cond_24
21865     move-object/from16 v0, p1
21867     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
21869     move-object/from16 v17, v0
21871     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
21873     move-result v3
21875     if-lez v3, :cond_d3
21877     add-int/lit8 v7, v3, -0x1
21879     :goto_32
21880     if-ltz v7, :cond_ca
21882     move-object/from16 v0, p1
21884     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
21886     move-object/from16 v17, v0
21888     move-object/from16 v0, v17
21890     invoke-virtual {v0, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
21892     move-result-object v16
21894     check-cast v16, Lcom/android/server/am/ServiceRecord$StartItem;
21896     invoke-virtual/range {v16 .. v16}, Lcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
21898     move-object/from16 v0, v16
21900     iget-object v0, v0, Lcom/android/server/am/ServiceRecord$StartItem;->intent:Landroid/content/Intent;
21902     move-object/from16 v17, v0
21904     if-nez v17, :cond_50
21906     :cond_4d
21907     :goto_4d
21908     add-int/lit8 v7, v7, -0x1
21910     goto :goto_32
21912     :cond_50
21913     if-eqz p2, :cond_6e
21915     move-object/from16 v0, v16
21917     iget v0, v0, Lcom/android/server/am/ServiceRecord$StartItem;->deliveryCount:I
21919     move/from16 v17, v0
21921     const/16 v18, 0x3
21923     move/from16 v0, v17
21925     move/from16 v1, v18
21927     if-ge v0, v1, :cond_9a
21929     move-object/from16 v0, v16
21931     iget v0, v0, Lcom/android/server/am/ServiceRecord$StartItem;->doneExecutingCount:I
21933     move/from16 v17, v0
21935     const/16 v18, 0x6
21937     move/from16 v0, v17
21939     move/from16 v1, v18
21941     if-ge v0, v1, :cond_9a
21943     :cond_6e
21944     move-object/from16 v0, p1
21946     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
21948     move-object/from16 v17, v0
21950     const/16 v18, 0x0
21952     move-object/from16 v0, v17
21954     move/from16 v1, v18
21956     move-object/from16 v2, v16
21958     invoke-virtual {v0, v1, v2}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
21960     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
21962     move-result-wide v17
21964     move-object/from16 v0, v16
21966     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord$StartItem;->deliveredTime:J
21968     move-wide/from16 v19, v0
21970     sub-long v5, v17, v19
21972     const-wide/16 v17, 0x2
21974     mul-long v5, v5, v17
21976     cmp-long v17, v8, v5
21978     if-gez v17, :cond_94
21980     move-wide v8, v5
21982     :cond_94
21983     cmp-long v17, v14, v5
21985     if-gez v17, :cond_4d
21987     move-wide v14, v5
21989     goto :goto_4d
21991     :cond_9a
21992     const-string v17, "ActivityManager"
21994     new-instance v18, Ljava/lang/StringBuilder;
21996     invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;-><init>()V
21998     const-string v19, "Canceling start item "
22000     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22002     move-result-object v18
22004     move-object/from16 v0, v16
22006     iget-object v0, v0, Lcom/android/server/am/ServiceRecord$StartItem;->intent:Landroid/content/Intent;
22008     move-object/from16 v19, v0
22010     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
22012     move-result-object v18
22014     const-string v19, " in service "
22016     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22018     move-result-object v18
22020     move-object/from16 v0, p1
22022     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
22024     move-object/from16 v19, v0
22026     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
22028     move-result-object v18
22030     invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
22032     move-result-object v18
22034     invoke-static/range {v17 .. v18}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
22036     const/4 v4, 0x1
22038     goto :goto_4d
22040     :cond_ca
22041     move-object/from16 v0, p1
22043     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
22045     move-object/from16 v17, v0
22047     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->clear()V
22049     :cond_d3
22050     move-object/from16 v0, p1
22052     iget v0, v0, Lcom/android/server/am/ServiceRecord;->totalRestartCount:I
22054     move/from16 v17, v0
22056     add-int/lit8 v17, v17, 0x1
22058     move/from16 v0, v17
22060     move-object/from16 v1, p1
22062     iput v0, v1, Lcom/android/server/am/ServiceRecord;->totalRestartCount:I
22064     move-object/from16 v0, p1
22066     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22068     move-wide/from16 v17, v0
22070     const-wide/16 v19, 0x0
22072     cmp-long v17, v17, v19
22074     if-nez v17, :cond_221
22076     move-object/from16 v0, p1
22078     iget v0, v0, Lcom/android/server/am/ServiceRecord;->restartCount:I
22080     move/from16 v17, v0
22082     add-int/lit8 v17, v17, 0x1
22084     move/from16 v0, v17
22086     move-object/from16 v1, p1
22088     iput v0, v1, Lcom/android/server/am/ServiceRecord;->restartCount:I
22090     move-object/from16 v0, p1
22092     iput-wide v8, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22094     :cond_ff
22095     :goto_ff
22096     move-object/from16 v0, p1
22098     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22100     move-wide/from16 v17, v0
22102     add-long v17, v17, v10
22104     move-wide/from16 v0, v17
22106     move-object/from16 v2, p1
22108     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22110     :cond_10d
22111     const/4 v13, 0x0
22113     move-object/from16 v0, p0
22115     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
22117     move-object/from16 v17, v0
22119     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
22121     move-result v17
22123     add-int/lit8 v7, v17, -0x1
22125     :goto_11a
22126     if-ltz v7, :cond_16f
22128     move-object/from16 v0, p0
22130     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
22132     move-object/from16 v17, v0
22134     move-object/from16 v0, v17
22136     invoke-virtual {v0, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22138     move-result-object v12
22140     check-cast v12, Lcom/android/server/am/ServiceRecord;
22142     move-object/from16 v0, p1
22144     if-eq v12, v0, :cond_285
22146     move-object/from16 v0, p1
22148     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22150     move-wide/from16 v17, v0
22152     iget-wide v0, v12, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22154     move-wide/from16 v19, v0
22156     const-wide/16 v21, 0x2710
22158     sub-long v19, v19, v21
22160     cmp-long v17, v17, v19
22162     if-ltz v17, :cond_285
22164     move-object/from16 v0, p1
22166     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22168     move-wide/from16 v17, v0
22170     iget-wide v0, v12, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22172     move-wide/from16 v19, v0
22174     const-wide/16 v21, 0x2710
22176     add-long v19, v19, v21
22178     cmp-long v17, v17, v19
22180     if-gez v17, :cond_285
22182     iget-wide v0, v12, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22184     move-wide/from16 v17, v0
22186     const-wide/16 v19, 0x2710
22188     add-long v17, v17, v19
22190     move-wide/from16 v0, v17
22192     move-object/from16 v2, p1
22194     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22196     move-object/from16 v0, p1
22198     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22200     move-wide/from16 v17, v0
22202     sub-long v17, v17, v10
22204     move-wide/from16 v0, v17
22206     move-object/from16 v2, p1
22208     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22210     const/4 v13, 0x1
22212     :cond_16f
22213     if-nez v13, :cond_10d
22215     move-object/from16 v0, p0
22217     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
22219     move-object/from16 v17, v0
22221     move-object/from16 v0, v17
22223     move-object/from16 v1, p1
22225     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
22227     move-result v17
22229     if-nez v17, :cond_18e
22231     move-object/from16 v0, p0
22233     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
22235     move-object/from16 v17, v0
22237     move-object/from16 v0, v17
22239     move-object/from16 v1, p1
22241     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
22243     :cond_18e
22244     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ServiceRecord;->cancelNotification()V
22246     move-object/from16 v0, p0
22248     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
22250     move-object/from16 v17, v0
22252     move-object/from16 v0, p1
22254     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->restarter:Ljava/lang/Runnable;
22256     move-object/from16 v18, v0
22258     invoke-virtual/range {v17 .. v18}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
22260     move-object/from16 v0, p0
22262     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
22264     move-object/from16 v17, v0
22266     move-object/from16 v0, p1
22268     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->restarter:Ljava/lang/Runnable;
22270     move-object/from16 v18, v0
22272     move-object/from16 v0, p1
22274     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22276     move-wide/from16 v19, v0
22278     invoke-virtual/range {v17 .. v20}, Landroid/os/Handler;->postAtTime(Ljava/lang/Runnable;J)Z
22280     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
22282     move-result-wide v17
22284     move-object/from16 v0, p1
22286     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22288     move-wide/from16 v19, v0
22290     add-long v17, v17, v19
22292     move-wide/from16 v0, v17
22294     move-object/from16 v2, p1
22296     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
22298     const-string v17, "ActivityManager"
22300     new-instance v18, Ljava/lang/StringBuilder;
22302     invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;-><init>()V
22304     const-string v19, "Scheduling restart of crashed service "
22306     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22308     move-result-object v18
22310     move-object/from16 v0, p1
22312     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
22314     move-object/from16 v19, v0
22316     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22318     move-result-object v18
22320     const-string v19, " in "
22322     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22324     move-result-object v18
22326     move-object/from16 v0, p1
22328     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22330     move-wide/from16 v19, v0
22332     invoke-virtual/range {v18 .. v20}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
22334     move-result-object v18
22336     const-string v19, "ms"
22338     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22340     move-result-object v18
22342     invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
22344     move-result-object v18
22346     invoke-static/range {v17 .. v18}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
22348     const/16 v17, 0x7553
22350     const/16 v18, 0x2
22352     move/from16 v0, v18
22354     new-array v0, v0, [Ljava/lang/Object;
22356     move-object/from16 v18, v0
22358     const/16 v19, 0x0
22360     move-object/from16 v0, p1
22362     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
22364     move-object/from16 v20, v0
22366     aput-object v20, v18, v19
22368     const/16 v19, 0x1
22370     move-object/from16 v0, p1
22372     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22374     move-wide/from16 v20, v0
22376     invoke-static/range {v20 .. v21}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
22378     move-result-object v20
22380     aput-object v20, v18, v19
22382     invoke-static/range {v17 .. v18}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
22384     return v4
22386     :cond_221
22387     move-object/from16 v0, p1
22389     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartTime:J
22391     move-wide/from16 v17, v0
22393     add-long v17, v17, v14
22395     cmp-long v17, v10, v17
22397     if-lez v17, :cond_23b
22399     const/16 v17, 0x1
22401     move/from16 v0, v17
22403     move-object/from16 v1, p1
22405     iput v0, v1, Lcom/android/server/am/ServiceRecord;->restartCount:I
22407     move-object/from16 v0, p1
22409     iput-wide v8, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22411     goto/16 :goto_ff
22413     :cond_23b
22414     move-object/from16 v0, p1
22416     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->serviceInfo:Landroid/content/pm/ServiceInfo;
22418     move-object/from16 v17, v0
22420     move-object/from16 v0, v17
22422     iget-object v0, v0, Landroid/content/pm/ServiceInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
22424     move-object/from16 v17, v0
22426     move-object/from16 v0, v17
22428     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
22430     move/from16 v17, v0
22432     and-int/lit8 v17, v17, 0x8
22434     if-eqz v17, :cond_265
22436     move-object/from16 v0, p1
22438     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22440     move-wide/from16 v17, v0
22442     const-wide/16 v19, 0x2
22444     div-long v19, v8, v19
22446     add-long v17, v17, v19
22448     move-wide/from16 v0, v17
22450     move-object/from16 v2, p1
22452     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22454     goto/16 :goto_ff
22456     :cond_265
22457     move-object/from16 v0, p1
22459     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22461     move-wide/from16 v17, v0
22463     const-wide/16 v19, 0x4
22465     mul-long v17, v17, v19
22467     move-wide/from16 v0, v17
22469     move-object/from16 v2, p1
22471     iput-wide v0, v2, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22473     move-object/from16 v0, p1
22475     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22477     move-wide/from16 v17, v0
22479     cmp-long v17, v17, v8
22481     if-gez v17, :cond_ff
22483     move-object/from16 v0, p1
22485     iput-wide v8, v0, Lcom/android/server/am/ServiceRecord;->restartDelay:J
22487     goto/16 :goto_ff
22489     :cond_285
22490     add-int/lit8 v7, v7, -0x1
22492     goto/16 :goto_11a
22493 .end method
22495 .method public static self()Lcom/android/server/am/ActivityManagerService;
22496     .registers 1
22498     sget-object v0, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22500     return-object v0
22501 .end method
22503 .method private final sendPackageBroadcastLocked(I[Ljava/lang/String;)V
22504     .registers 6
22506     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
22508     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
22510     move-result v2
22512     add-int/lit8 v0, v2, -0x1
22514     :goto_8
22515     if-ltz v0, :cond_1e
22517     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
22519     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22521     move-result-object v1
22523     check-cast v1, Lcom/android/server/am/ProcessRecord;
22525     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
22527     if-eqz v2, :cond_1b
22529     :try_start_16
22530     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
22532     invoke-interface {v2, p1, p2}, Landroid/app/IApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V
22533     :try_end_1b
22534     .catch Landroid/os/RemoteException; {:try_start_16 .. :try_end_1b} :catch_1f
22536     :cond_1b
22537     :goto_1b
22538     add-int/lit8 v0, v0, -0x1
22540     goto :goto_8
22542     :cond_1e
22543     return-void
22545     :catch_1f
22546     move-exception v2
22548     goto :goto_1b
22549 .end method
22551 .method private final sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;Z)V
22552     .registers 13
22554     const/4 v9, 0x1
22556     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
22558     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
22560     move-result v6
22562     if-nez v6, :cond_a
22564     :cond_9
22565     :goto_9
22566     return-void
22568     :cond_a
22569     :goto_a
22570     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
22572     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
22574     move-result v0
22576     if-lez v0, :cond_9
22578     :try_start_12
22579     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
22581     const/4 v1, 0x0
22583     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
22585     move-result-object v8
22587     check-cast v8, Lcom/android/server/am/ServiceRecord$StartItem;
22589     iget-object v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->intent:Landroid/content/Intent;
22591     if-nez v0, :cond_21
22593     if-gt v6, v9, :cond_a
22595     :cond_21
22596     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
22598     move-result-wide v0
22600     iput-wide v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->deliveredTime:J
22602     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
22604     invoke-virtual {v0, v8}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
22606     iget v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->deliveryCount:I
22608     add-int/lit8 v0, v0, 0x1
22610     iput v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->deliveryCount:I
22612     iget-object v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->neededGrants:Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
22614     if-eqz v0, :cond_3f
22616     iget-object v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->neededGrants:Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
22618     invoke-virtual {v8}, Lcom/android/server/am/ServiceRecord$StartItem;->getUriPermissionsLocked()Lcom/android/server/am/UriPermissionOwner;
22620     move-result-object v1
22622     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedFromIntentLocked(Lcom/android/server/am/ActivityManagerService$NeededUriGrants;Lcom/android/server/am/UriPermissionOwner;)V
22624     :cond_3f
22625     const-string v0, "start"
22627     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
22629     if-nez p2, :cond_4c
22631     const/4 p2, 0x1
22633     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
22635     invoke-direct {p0, v0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
22637     :cond_4c
22638     const/4 v4, 0x0
22640     iget v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->deliveryCount:I
22642     if-le v0, v9, :cond_53
22644     or-int/lit8 v4, v4, 0x2
22646     :cond_53
22647     iget v0, v8, Lcom/android/server/am/ServiceRecord$StartItem;->doneExecutingCount:I
22649     if-lez v0, :cond_59
22651     or-int/lit8 v4, v4, 0x1
22653     :cond_59
22654     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
22656     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
22658     iget-boolean v2, v8, Lcom/android/server/am/ServiceRecord$StartItem;->taskRemoved:Z
22660     iget v3, v8, Lcom/android/server/am/ServiceRecord$StartItem;->id:I
22662     iget-object v5, v8, Lcom/android/server/am/ServiceRecord$StartItem;->intent:Landroid/content/Intent;
22664     move-object v1, p1
22666     invoke-interface/range {v0 .. v5}, Landroid/app/IApplicationThread;->scheduleServiceArgs(Landroid/os/IBinder;ZIILandroid/content/Intent;)V
22667     :try_end_67
22668     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_67} :catch_68
22669     .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_67} :catch_6a
22671     goto :goto_a
22673     :catch_68
22674     move-exception v7
22676     goto :goto_9
22678     :catch_6a
22679     move-exception v7
22681     const-string v0, "ActivityManager"
22683     const-string v1, "Unexpected exception"
22685     invoke-static {v0, v1, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
22687     goto :goto_9
22688 .end method
22690 .method public static setSystemProcess()V
22691     .registers 9
22693     :try_start_0
22694     sget-object v3, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22696     const-string v4, "activity"
22698     const/4 v5, 0x1
22700     invoke-static {v4, v3, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;Z)V
22702     const-string v4, "meminfo"
22704     new-instance v5, Lcom/android/server/am/ActivityManagerService$MemBinder;
22706     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
22708     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
22710     const-string v4, "gfxinfo"
22712     new-instance v5, Lcom/android/server/am/ActivityManagerService$GraphicsBinder;
22714     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
22716     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
22718     const-string v4, "dbinfo"
22720     new-instance v5, Lcom/android/server/am/ActivityManagerService$DbBinder;
22722     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
22724     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
22726     const-string v4, "cpuinfo"
22728     new-instance v5, Lcom/android/server/am/ActivityManagerService$CpuBinder;
22730     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$CpuBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
22732     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
22734     const-string v4, "permission"
22736     new-instance v5, Lcom/android/server/am/ActivityManagerService$PermissionController;
22738     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
22740     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
22742     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22744     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
22746     invoke-virtual {v4}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
22748     move-result-object v4
22750     const-string v5, "android"
22752     const/16 v6, 0x400
22754     invoke-virtual {v4, v5, v6}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
22756     move-result-object v2
22758     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
22760     invoke-virtual {v4, v2}, Landroid/app/ActivityThread;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
22762     sget-object v5, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22764     monitor-enter v5
22765     :try_end_52
22766     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_52} :catch_95
22768     :try_start_52
22769     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22771     sget-object v6, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
22773     invoke-virtual {v6}, Landroid/app/ActivityThread;->getApplicationThread()Landroid/app/ActivityThread$ApplicationThread;
22775     move-result-object v6
22777     iget-object v7, v2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
22779     const/4 v8, 0x0
22781     invoke-virtual {v4, v6, v2, v7, v8}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
22783     move-result-object v0
22785     const/4 v4, 0x1
22787     iput-boolean v4, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
22789     sget v4, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
22791     iput v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22793     const/16 v4, -0x10
22795     iput v4, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
22797     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22799     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
22801     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
22803     iget v7, v0, Lcom/android/server/am/ProcessRecord;->uid:I
22805     invoke-virtual {v4, v6, v7, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
22807     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22809     iget-object v6, v4, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
22811     monitor-enter v6
22812     :try_end_7c
22813     .catchall {:try_start_52 .. :try_end_7c} :catchall_92
22815     :try_start_7c
22816     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22818     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
22820     iget v7, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22822     invoke-virtual {v4, v7, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
22824     monitor-exit v6
22825     :try_end_86
22826     .catchall {:try_start_7c .. :try_end_86} :catchall_8f
22828     :try_start_86
22829     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
22831     const/4 v6, 0x1
22833     const/4 v7, 0x1
22835     invoke-virtual {v4, v0, v6, v7}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
22837     monitor-exit v5
22838     :try_end_8e
22839     .catchall {:try_start_86 .. :try_end_8e} :catchall_92
22841     return-void
22843     :catchall_8f
22844     move-exception v4
22846     :try_start_90
22847     monitor-exit v6
22848     :try_end_91
22849     .catchall {:try_start_90 .. :try_end_91} :catchall_8f
22851     :try_start_91
22852     throw v4
22854     :catchall_92
22855     move-exception v4
22857     monitor-exit v5
22858     :try_end_94
22859     .catchall {:try_start_91 .. :try_end_94} :catchall_92
22861     :try_start_94
22862     throw v4
22863     :try_end_95
22864     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_94 .. :try_end_95} :catch_95
22866     :catch_95
22867     move-exception v1
22869     new-instance v4, Ljava/lang/RuntimeException;
22871     const-string v5, "Unable to find android system package"
22873     invoke-direct {v4, v5, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
22875     throw v4
22876 .end method
22878 .method private static final shouldShowDialogs(Landroid/content/res/Configuration;)Z
22879     .registers 3
22881     const/4 v0, 0x1
22883     iget v1, p0, Landroid/content/res/Configuration;->keyboard:I
22885     if-ne v1, v0, :cond_9
22887     iget v1, p0, Landroid/content/res/Configuration;->touchscreen:I
22889     if-eq v1, v0, :cond_a
22891     :cond_9
22892     :goto_9
22893     return v0
22895     :cond_a
22896     const/4 v0, 0x0
22898     goto :goto_9
22899 .end method
22901 .method private final startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
22902     .registers 19
22904     move-object/from16 v0, p1
22906     iget v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22908     if-lez v1, :cond_29
22910     move-object/from16 v0, p1
22912     iget v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22914     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
22916     if-eq v1, v2, :cond_29
22918     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
22920     monitor-enter v2
22922     :try_start_11
22923     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
22925     move-object/from16 v0, p1
22927     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22929     invoke-virtual {v1, v4}, Landroid/util/SparseArray;->remove(I)V
22931     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
22933     const/16 v4, 0x14
22935     move-object/from16 v0, p1
22937     invoke-virtual {v1, v4, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
22939     monitor-exit v2
22940     :try_end_24
22941     .catchall {:try_start_11 .. :try_end_24} :catchall_199
22943     const/4 v1, 0x0
22945     move-object/from16 v0, p1
22947     iput v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
22949     :cond_29
22950     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
22952     move-object/from16 v0, p1
22954     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
22956     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStats()V
22958     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
22960     const/4 v2, 0x0
22962     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
22964     const/4 v7, 0x1
22966     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
22968     array-length v8, v8
22970     add-int/lit8 v8, v8, -0x1
22972     invoke-static {v1, v2, v4, v7, v8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
22974     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
22976     const/4 v2, 0x0
22978     const/4 v4, 0x0
22980     aput v4, v1, v2
22982     :try_start_47
22983     move-object/from16 v0, p1
22985     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
22987     const/4 v5, 0x0
22989     move-object/from16 v0, p1
22991     iget-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
22992     :try_end_50
22993     .catch Ljava/lang/RuntimeException; {:try_start_47 .. :try_end_50} :catch_1a6
22995     if-nez v1, :cond_62
22997     :try_start_52
22998     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
23000     invoke-virtual {v1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
23002     move-result-object v1
23004     move-object/from16 v0, p1
23006     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23008     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
23010     invoke-virtual {v1, v2}, Landroid/content/pm/PackageManager;->getPackageGids(Ljava/lang/String;)[I
23011     :try_end_61
23012     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_52 .. :try_end_61} :catch_19c
23013     .catch Ljava/lang/RuntimeException; {:try_start_52 .. :try_end_61} :catch_1a6
23015     move-result-object v5
23017     :cond_62
23018     :goto_62
23019     :try_start_62
23020     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
23022     if-eqz v1, :cond_90
23024     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
23026     const/4 v2, 0x1
23028     if-ne v1, v2, :cond_80
23030     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
23032     if-eqz v1, :cond_80
23034     move-object/from16 v0, p1
23036     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23038     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
23040     invoke-virtual {v2}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
23042     move-result-object v2
23044     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
23046     move-result v1
23048     if-eqz v1, :cond_80
23050     const/4 v3, 0x0
23052     :cond_80
23053     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
23055     const/4 v2, 0x2
23057     if-ne v1, v2, :cond_90
23059     move-object/from16 v0, p1
23061     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23063     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
23065     and-int/lit8 v1, v1, 0x10
23067     if-eqz v1, :cond_90
23069     const/4 v3, 0x0
23071     :cond_90
23072     const/4 v6, 0x0
23074     move-object/from16 v0, p1
23076     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23078     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
23080     and-int/lit8 v1, v1, 0x2
23082     if-eqz v1, :cond_9f
23084     or-int/lit8 v6, v6, 0x1
23086     or-int/lit8 v6, v6, 0x2
23088     :cond_9f
23089     move-object/from16 v0, p1
23091     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23093     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
23095     and-int/lit16 v1, v1, 0x4000
23097     if-nez v1, :cond_ae
23099     sget-boolean v1, Ldalvik/system/Zygote;->systemInSafeMode:Z
23101     const/4 v2, 0x1
23103     if-ne v1, v2, :cond_b0
23105     :cond_ae
23106     or-int/lit8 v6, v6, 0x8
23108     :cond_b0
23109     const-string v1, "1"
23111     const-string v2, "debug.checkjni"
23113     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
23115     move-result-object v2
23117     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
23119     move-result v1
23121     if-eqz v1, :cond_c0
23123     or-int/lit8 v6, v6, 0x2
23125     :cond_c0
23126     const-string v1, "1"
23128     const-string v2, "debug.jni.logging"
23130     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
23132     move-result-object v2
23134     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
23136     move-result v1
23138     if-eqz v1, :cond_d0
23140     or-int/lit8 v6, v6, 0x10
23142     :cond_d0
23143     const-string v1, "1"
23145     const-string v2, "debug.assert"
23147     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
23149     move-result-object v2
23151     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
23153     move-result v1
23155     if-eqz v1, :cond_e0
23157     or-int/lit8 v6, v6, 0x4
23159     :cond_e0
23160     const-string v1, "android.app.ActivityThread"
23162     move-object/from16 v0, p1
23164     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23166     move-object/from16 v0, p1
23168     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23170     iget v7, v4, Landroid/content/pm/ApplicationInfo;->targetSdkVersion:I
23172     const/4 v8, 0x0
23174     move v4, v3
23176     invoke-static/range {v1 .. v8}, Landroid/os/Process;->start(Ljava/lang/String;Ljava/lang/String;II[III[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult;
23178     move-result-object v14
23180     move-object/from16 v0, p1
23182     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
23184     invoke-virtual {v1}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
23186     move-result-object v9
23188     monitor-enter v9
23189     :try_end_fb
23190     .catch Ljava/lang/RuntimeException; {:try_start_62 .. :try_end_fb} :catch_1a6
23192     :try_start_fb
23193     invoke-virtual {v9}, Lcom/android/internal/os/BatteryStatsImpl;->isOnBattery()Z
23195     move-result v1
23197     if-eqz v1, :cond_108
23199     move-object/from16 v0, p1
23201     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
23203     invoke-virtual {v1}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->incStartsLocked()V
23205     :cond_108
23206     monitor-exit v9
23207     :try_end_109
23208     .catchall {:try_start_fb .. :try_end_109} :catchall_1c9
23210     const/16 v2, 0x753e
23212     const/4 v1, 0x5
23214     :try_start_10c
23215     new-array v4, v1, [Ljava/lang/Object;
23217     const/4 v1, 0x0
23219     iget v7, v14, Landroid/os/Process$ProcessStartResult;->pid:I
23221     invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23223     move-result-object v7
23225     aput-object v7, v4, v1
23227     const/4 v1, 0x1
23229     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23231     move-result-object v7
23233     aput-object v7, v4, v1
23235     const/4 v1, 0x2
23237     move-object/from16 v0, p1
23239     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23241     aput-object v7, v4, v1
23243     const/4 v1, 0x3
23245     aput-object p2, v4, v1
23247     const/4 v7, 0x4
23249     if-eqz p3, :cond_1cc
23251     move-object/from16 v1, p3
23253     :goto_12d
23254     aput-object v1, v4, v7
23256     invoke-static {v2, v4}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
23258     move-object/from16 v0, p1
23260     iget-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
23262     if-eqz v1, :cond_145
23264     invoke-static {}, Lcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
23266     move-result-object v1
23268     move-object/from16 v0, p1
23270     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23272     iget v4, v14, Landroid/os/Process$ProcessStartResult;->pid:I
23274     invoke-virtual {v1, v2, v4}, Lcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
23276     :cond_145
23277     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
23279     const/4 v1, 0x0
23281     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->setLength(I)V
23283     const-string v1, "Start proc "
23285     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23287     move-object/from16 v0, p1
23289     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23291     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23293     const-string v1, " for "
23295     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23297     move-object/from16 v0, p2
23299     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23301     if-eqz p3, :cond_16d
23303     const-string v1, " "
23305     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23307     move-object/from16 v0, p3
23309     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23311     :cond_16d
23312     const-string v1, ": pid="
23314     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23316     iget v1, v14, Landroid/os/Process$ProcessStartResult;->pid:I
23318     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23320     const-string v1, " uid="
23322     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23324     invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23326     const-string v1, " gids={"
23328     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23330     if-eqz v5, :cond_1d0
23332     const/4 v12, 0x0
23334     :goto_187
23335     array-length v1, v5
23337     if-ge v12, v1, :cond_1d0
23339     if-eqz v12, :cond_191
23341     const-string v1, ", "
23343     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23345     :cond_191
23346     aget v1, v5, v12
23348     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23349     :try_end_196
23350     .catch Ljava/lang/RuntimeException; {:try_start_10c .. :try_end_196} :catch_1a6
23352     add-int/lit8 v12, v12, 0x1
23354     goto :goto_187
23356     :catchall_199
23357     move-exception v1
23359     :try_start_19a
23360     monitor-exit v2
23361     :try_end_19b
23362     .catchall {:try_start_19a .. :try_end_19b} :catchall_199
23364     throw v1
23366     :catch_19c
23367     move-exception v11
23369     :try_start_19d
23370     const-string v1, "ActivityManager"
23372     const-string v2, "Unable to retrieve gids"
23374     invoke-static {v1, v2, v11}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
23375     :try_end_1a4
23376     .catch Ljava/lang/RuntimeException; {:try_start_19d .. :try_end_1a4} :catch_1a6
23378     goto/16 :goto_62
23380     :catch_1a6
23381     move-exception v11
23383     const/4 v1, 0x0
23385     move-object/from16 v0, p1
23387     iput v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23389     const-string v1, "ActivityManager"
23391     new-instance v2, Ljava/lang/StringBuilder;
23393     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
23395     const-string v4, "Failure starting process "
23397     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23399     move-result-object v2
23401     move-object/from16 v0, p1
23403     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23405     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23407     move-result-object v2
23409     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23411     move-result-object v2
23413     invoke-static {v1, v2, v11}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
23415     :goto_1c8
23416     return-void
23418     :catchall_1c9
23419     move-exception v1
23421     :try_start_1ca
23422     monitor-exit v9
23423     :try_end_1cb
23424     .catchall {:try_start_1ca .. :try_end_1cb} :catchall_1c9
23426     :try_start_1cb
23427     throw v1
23429     :cond_1cc
23430     const-string v1, ""
23432     goto/16 :goto_12d
23434     :cond_1d0
23435     const-string v1, "}"
23437     invoke-virtual {v10, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23439     const-string v1, "ActivityManager"
23441     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23443     move-result-object v2
23445     invoke-static {v1, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23447     iget v1, v14, Landroid/os/Process$ProcessStartResult;->pid:I
23449     move-object/from16 v0, p1
23451     iput v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23453     iget-boolean v1, v14, Landroid/os/Process$ProcessStartResult;->usingWrapper:Z
23455     move-object/from16 v0, p1
23457     iput-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->usingWrapper:Z
23459     const/4 v1, 0x0
23461     move-object/from16 v0, p1
23463     iput-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
23465     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
23467     monitor-enter v4
23468     :try_end_1f2
23469     .catch Ljava/lang/RuntimeException; {:try_start_1cb .. :try_end_1f2} :catch_1a6
23471     :try_start_1f2
23472     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
23474     iget v2, v14, Landroid/os/Process$ProcessStartResult;->pid:I
23476     move-object/from16 v0, p1
23478     invoke-virtual {v1, v2, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
23480     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
23482     const/16 v2, 0x14
23484     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
23486     move-result-object v13
23488     move-object/from16 v0, p1
23490     iput-object v0, v13, Landroid/os/Message;->obj:Ljava/lang/Object;
23492     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
23494     iget-boolean v1, v14, Landroid/os/Process$ProcessStartResult;->usingWrapper:Z
23496     if-eqz v1, :cond_218
23498     const-wide/32 v1, 0x493e0
23500     :goto_210
23501     invoke-virtual {v7, v13, v1, v2}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
23503     monitor-exit v4
23505     goto :goto_1c8
23507     :catchall_215
23508     move-exception v1
23510     monitor-exit v4
23511     :try_end_217
23512     .catchall {:try_start_1f2 .. :try_end_217} :catchall_215
23514     :try_start_217
23515     throw v1
23516     :try_end_218
23517     .catch Ljava/lang/RuntimeException; {:try_start_217 .. :try_end_218} :catch_1a6
23519     :cond_218
23520     const-wide/16 v1, 0x2710
23522     goto :goto_210
23523 .end method
23525 .method private stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
23526     .registers 8
23528     if-eqz p1, :cond_6
23530     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
23532     if-ne p1, v1, :cond_f
23534     :cond_6
23535     iget-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
23537     iget-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
23539     iget p3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
23541     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
23543     :cond_f
23544     if-nez p1, :cond_12
23546     :goto_11
23547     return-void
23549     :cond_12
23550     :try_start_12
23551     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23553     const/4 v2, 0x0
23555     const/4 v3, 0x0
23557     invoke-interface {v1, v2, p2, v3, p3}, Landroid/app/IApplicationThread;->profilerControl(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
23558     :try_end_19
23559     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_19} :catch_1a
23561     goto :goto_11
23563     :catch_1a
23564     move-exception v0
23566     new-instance v1, Ljava/lang/IllegalStateException;
23568     const-string v2, "Process disappeared"
23570     invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
23572     throw v1
23573 .end method
23575 .method private stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
23576     .registers 5
23578     const/4 v2, 0x0
23580     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
23582     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
23584     move-result-object v1
23586     monitor-enter v1
23588     :try_start_8
23589     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
23591     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked()V
23593     monitor-exit v1
23594     :try_end_e
23595     .catchall {:try_start_8 .. :try_end_e} :catchall_16
23597     iput-boolean v2, p1, Lcom/android/server/am/ServiceRecord;->startRequested:Z
23599     iput-boolean v2, p1, Lcom/android/server/am/ServiceRecord;->callStart:Z
23601     invoke-direct {p0, p1, v2}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
23603     return-void
23605     :catchall_16
23606     move-exception v0
23608     :try_start_17
23609     monitor-exit v1
23610     :try_end_18
23611     .catchall {:try_start_17 .. :try_end_18} :catchall_16
23613     throw v0
23614 .end method
23616 .method private taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
23617     .registers 6
23619     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
23621     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
23623     move-result v0
23625     const/4 v1, 0x0
23627     :goto_7
23628     if-ge v1, v0, :cond_19
23630     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
23632     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23634     move-result-object v2
23636     check-cast v2, Lcom/android/server/am/TaskRecord;
23638     iget v3, v2, Lcom/android/server/am/TaskRecord;->taskId:I
23640     if-ne v3, p1, :cond_16
23642     :goto_15
23643     return-object v2
23645     :cond_16
23646     add-int/lit8 v1, v1, 0x1
23648     goto :goto_7
23650     :cond_19
23651     const/4 v2, 0x0
23653     goto :goto_15
23654 .end method
23656 .method private final unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)Z
23657     .registers 6
23659     iget-wide v0, p1, Lcom/android/server/am/ServiceRecord;->restartDelay:J
23661     const-wide/16 v2, 0x0
23663     cmp-long v0, v0, v2
23665     if-nez v0, :cond_a
23667     const/4 v0, 0x0
23669     :goto_9
23670     return v0
23672     :cond_a
23673     invoke-virtual {p1}, Lcom/android/server/am/ServiceRecord;->resetRestartCounter()V
23675     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
23677     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
23679     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
23681     iget-object v1, p1, Lcom/android/server/am/ServiceRecord;->restarter:Ljava/lang/Runnable;
23683     invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
23685     const/4 v0, 0x1
23687     goto :goto_9
23688 .end method
23690 .method private updateEventDispatchingLocked()V
23691     .registers 3
23693     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
23695     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
23697     if-eqz v0, :cond_13
23699     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
23701     if-nez v0, :cond_13
23703     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
23705     if-nez v0, :cond_13
23707     const/4 v0, 0x1
23709     :goto_f
23710     invoke-virtual {v1, v0}, Lcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
23712     return-void
23714     :cond_13
23715     const/4 v0, 0x0
23717     goto :goto_f
23718 .end method
23720 .method private final updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
23721     .registers 18
23723     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23725     invoke-virtual {v9, p1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
23727     move-result v6
23729     if-ltz v6, :cond_d
23731     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23733     invoke-virtual {v9, v6}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
23735     :cond_d
23736     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23738     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
23740     move-result v9
23742     add-int/lit8 v3, v9, -0x1
23744     const/4 v8, 0x0
23746     iget v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
23748     iput v9, p1, Lcom/android/server/am/ProcessRecord;->lruSeq:I
23750     if-eqz p3, :cond_22
23752     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
23754     move-result-wide v9
23756     iput-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
23758     :cond_22
23759     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
23761     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
23763     move-result v9
23765     if-lez v9, :cond_a3
23767     iget-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
23769     iput-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
23771     :goto_2e
23772     if-ltz v3, :cond_55
23774     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23776     invoke-virtual {v9, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23778     move-result-object v7
23780     check-cast v7, Lcom/android/server/am/ProcessRecord;
23782     if-lez v8, :cond_42
23784     iget v9, v7, Lcom/android/server/am/ProcessRecord;->setAdj:I
23786     sget v10, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
23788     if-lt v9, v10, :cond_42
23790     add-int/lit8 v8, v8, -0x1
23792     :cond_42
23793     iget-wide v9, v7, Lcom/android/server/am/ProcessRecord;->lruWeight:J
23795     iget-wide v11, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
23797     cmp-long v9, v9, v11
23799     if-lez v9, :cond_4e
23801     move/from16 v0, p4
23803     if-ge v3, v0, :cond_c0
23805     :cond_4e
23806     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23808     add-int/lit8 v10, v3, 0x1
23810     invoke-virtual {v9, v10, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
23812     :cond_55
23813     if-gez v3, :cond_5d
23815     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23817     const/4 v10, 0x0
23819     invoke-virtual {v9, v10, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
23821     :cond_5d
23822     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
23824     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
23826     move-result v9
23828     if-lez v9, :cond_c4
23830     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
23832     invoke-virtual {v9}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
23834     move-result-object v4
23836     :cond_6b
23837     :goto_6b
23838     invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
23840     move-result v9
23842     if-eqz v9, :cond_c4
23844     invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
23846     move-result-object v2
23848     check-cast v2, Lcom/android/server/am/ConnectionRecord;
23850     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
23852     if-eqz v9, :cond_6b
23854     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
23856     iget-object v9, v9, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
23858     if-eqz v9, :cond_6b
23860     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
23862     iget-object v9, v9, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
23864     iget-object v9, v9, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
23866     if-eqz v9, :cond_6b
23868     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
23870     iget-object v9, v9, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
23872     iget-object v9, v9, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
23874     iget v9, v9, Lcom/android/server/am/ProcessRecord;->lruSeq:I
23876     iget v10, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
23878     if-eq v9, v10, :cond_6b
23880     iget-object v9, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
23882     iget-object v9, v9, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
23884     iget-object v9, v9, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
23886     add-int/lit8 v10, v3, 0x1
23888     move/from16 v0, p3
23890     invoke-direct {p0, v9, p2, v0, v10}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
23892     goto :goto_6b
23894     :cond_a3
23895     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
23897     invoke-virtual {v9}, Ljava/util/HashMap;->size()I
23899     move-result v9
23901     if-lez v9, :cond_b5
23903     iget-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
23905     const-wide/16 v11, 0x3a98
23907     sub-long/2addr v9, v11
23909     iput-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
23911     const/4 v8, 0x2
23913     goto/16 :goto_2e
23915     :cond_b5
23916     iget-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
23918     const-wide/32 v11, 0x1d4c0
23920     sub-long/2addr v9, v11
23922     iput-wide v9, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
23924     const/4 v8, 0x2
23926     goto/16 :goto_2e
23928     :cond_c0
23929     add-int/lit8 v3, v3, -0x1
23931     goto/16 :goto_2e
23933     :cond_c4
23934     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
23936     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
23938     move-result v9
23940     add-int/lit8 v5, v9, -0x1
23942     :goto_cc
23943     if-ltz v5, :cond_f0
23945     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
23947     invoke-virtual {v9, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23949     move-result-object v9
23951     check-cast v9, Lcom/android/server/am/ContentProviderConnection;
23953     iget-object v1, v9, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
23955     iget-object v9, v1, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
23957     if-eqz v9, :cond_ed
23959     iget-object v9, v1, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
23961     iget v9, v9, Lcom/android/server/am/ProcessRecord;->lruSeq:I
23963     iget v10, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
23965     if-eq v9, v10, :cond_ed
23967     iget-object v9, v1, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
23969     add-int/lit8 v10, v3, 0x1
23971     move/from16 v0, p3
23973     invoke-direct {p0, v9, p2, v0, v10}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
23975     :cond_ed
23976     add-int/lit8 v5, v5, -0x1
23978     goto :goto_cc
23980     :cond_f0
23981     if-eqz p2, :cond_f5
23983     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
23985     :cond_f5
23986     return-void
23987 .end method
23989 .method private final updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
23990     .registers 13
23992     const/16 v10, 0xf
23994     const/4 v6, 0x1
23996     const/4 v7, 0x0
23998     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord;
24000     move-result-object v0
24002     if-eqz v0, :cond_32
24004     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
24006     :goto_c
24007     iget v2, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24009     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
24011     if-lt v2, v8, :cond_34
24013     if-gt v2, v10, :cond_34
24015     move v5, v6
24017     :goto_15
24018     iget v8, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
24020     add-int/lit8 v8, v8, 0x1
24022     iput v8, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
24024     iget v8, p1, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
24026     invoke-direct {p0, p1, v8, v1, v7}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;Z)Z
24028     move-result v4
24030     iget v8, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24032     sget v9, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
24034     if-lt v8, v9, :cond_36
24036     iget v8, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24038     if-gt v8, v10, :cond_36
24040     move v3, v6
24042     :goto_2c
24043     if-eq v3, v5, :cond_31
24045     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
24047     :cond_31
24048     return v4
24050     :cond_32
24051     const/4 v1, 0x0
24053     goto :goto_c
24055     :cond_34
24056     move v5, v7
24058     goto :goto_15
24060     :cond_36
24061     move v3, v7
24063     goto :goto_2c
24064 .end method
24066 .method private final updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;Z)Z
24067     .registers 17
24069     iput p2, p1, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
24071     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
24073     if-nez v0, :cond_8
24075     const/4 v10, 0x0
24077     :cond_7
24078     :goto_7
24079     return v10
24081     :cond_8
24082     iget-boolean v11, p1, Lcom/android/server/am/ProcessRecord;->keeping:Z
24084     const/4 v10, 0x1
24086     const/4 v4, 0x0
24088     move-object v0, p0
24090     move-object v1, p1
24092     move v2, p2
24094     move-object v3, p3
24096     move/from16 v5, p4
24098     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZZ)I
24100     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
24102     iget v1, p1, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
24104     if-eq v0, v1, :cond_41
24106     if-eqz v11, :cond_3d
24108     iget-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->keeping:Z
24110     if-nez v0, :cond_3d
24112     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
24114     invoke-virtual {v0}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
24116     move-result-object v9
24118     monitor-enter v9
24120     :try_start_28
24121     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
24123     iget v0, v0, Landroid/content/pm/ApplicationInfo;->uid:I
24125     iget v1, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24127     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
24129     move-result-wide v2
24131     invoke-virtual {v9, v0, v1, v2, v3}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
24133     move-result-wide v0
24135     iput-wide v0, p1, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
24137     monitor-exit v9
24138     :try_end_39
24139     .catchall {:try_start_28 .. :try_end_39} :catchall_be
24141     iget-wide v0, p1, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
24143     iput-wide v0, p1, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
24145     :cond_3d
24146     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
24148     iput v0, p1, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
24150     :cond_41
24151     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24153     iget v1, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
24155     if-eq v0, v1, :cond_55
24157     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24159     iget v1, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24161     invoke-static {v0, v1}, Landroid/os/Process;->setOomAdj(II)Z
24163     move-result v0
24165     if-eqz v0, :cond_c1
24167     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24169     iput v0, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
24171     :cond_55
24172     :goto_55
24173     iget v0, p1, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
24175     iget v1, p1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
24177     if-eq v0, v1, :cond_7
24179     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
24181     iput v0, p1, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
24183     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
24185     if-eqz v0, :cond_e8
24187     iget v0, p1, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
24189     if-nez v0, :cond_e8
24191     const-string v0, "ActivityManager"
24193     new-instance v1, Ljava/lang/StringBuilder;
24195     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
24197     const-string v2, "Killing "
24199     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24201     move-result-object v1
24203     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
24205     move-result-object v2
24207     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24209     move-result-object v1
24211     const-string v2, ": "
24213     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24215     move-result-object v1
24217     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
24219     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24221     move-result-object v1
24223     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24225     move-result-object v1
24227     invoke-static {v0, v1}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
24229     const/16 v0, 0x7547
24231     const/4 v1, 0x4
24233     new-array v1, v1, [Ljava/lang/Object;
24235     const/4 v2, 0x0
24237     iget v3, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24239     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
24241     move-result-object v3
24243     aput-object v3, v1, v2
24245     const/4 v2, 0x1
24247     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
24249     aput-object v3, v1, v2
24251     const/4 v2, 0x2
24253     iget v3, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
24255     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
24257     move-result-object v3
24259     aput-object v3, v1, v2
24261     const/4 v2, 0x3
24263     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
24265     aput-object v3, v1, v2
24267     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
24269     const/4 v0, 0x1
24271     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
24273     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24275     invoke-static {v0}, Landroid/os/Process;->killProcessQuiet(I)V
24277     const/4 v10, 0x0
24279     goto/16 :goto_7
24281     :catchall_be
24282     move-exception v0
24284     :try_start_bf
24285     monitor-exit v9
24286     :try_end_c0
24287     .catchall {:try_start_bf .. :try_end_c0} :catchall_be
24289     throw v0
24291     :cond_c1
24292     const/4 v10, 0x0
24294     const-string v0, "ActivityManager"
24296     new-instance v1, Ljava/lang/StringBuilder;
24298     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
24300     const-string v2, "Failed setting oom adj of "
24302     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24304     move-result-object v1
24306     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
24308     move-result-object v1
24310     const-string v2, " to "
24312     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24314     move-result-object v1
24316     iget v2, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
24318     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
24320     move-result-object v1
24322     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24324     move-result-object v1
24326     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
24328     goto/16 :goto_55
24330     :cond_e8
24331     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24333     move-result-wide v7
24335     :try_start_ec
24336     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24338     iget v1, p1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
24340     invoke-static {v0, v1}, Landroid/os/Process;->setProcessGroup(II)V
24341     :try_end_f3
24342     .catchall {:try_start_ec .. :try_end_f3} :catchall_123
24343     .catch Ljava/lang/Exception; {:try_start_ec .. :try_end_f3} :catch_f8
24345     :goto_f3
24346     invoke-static {v7, v8}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24348     goto/16 :goto_7
24350     :catch_f8
24351     move-exception v6
24353     :try_start_f9
24354     const-string v0, "ActivityManager"
24356     new-instance v1, Ljava/lang/StringBuilder;
24358     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
24360     const-string v2, "Failed setting process group of "
24362     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24364     move-result-object v1
24366     iget v2, p1, Lcom/android/server/am/ProcessRecord;->pid:I
24368     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
24370     move-result-object v1
24372     const-string v2, " to "
24374     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24376     move-result-object v1
24378     iget v2, p1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
24380     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
24382     move-result-object v1
24384     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24386     move-result-object v1
24388     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
24390     invoke-virtual {v6}, Ljava/lang/Exception;->printStackTrace()V
24391     :try_end_122
24392     .catchall {:try_start_f9 .. :try_end_122} :catchall_123
24394     goto :goto_f3
24396     :catchall_123
24397     move-exception v0
24399     invoke-static {v7, v8}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24401     throw v0
24402 .end method
24404 .method private userExists(I)Z
24405     .registers 5
24407     const/4 v1, 0x0
24409     :try_start_1
24410     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
24412     move-result-object v2
24414     invoke-interface {v2, p1}, Landroid/content/pm/IPackageManager;->getUser(I)Landroid/content/pm/UserInfo;
24415     :try_end_8
24416     .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_8} :catch_d
24418     move-result-object v0
24420     if-eqz v0, :cond_c
24422     const/4 v1, 0x1
24424     :cond_c
24425     :goto_c
24426     return v1
24428     :catch_d
24429     move-exception v2
24431     goto :goto_c
24432 .end method
24434 .method private static writeLastDonePreBootReceivers(Ljava/util/ArrayList;)V
24435     .registers 10
24436     .annotation system Ldalvik/annotation/Signature;
24437         value = {
24438             "(",
24439             "Ljava/util/ArrayList",
24440             "<",
24441             "Landroid/content/ComponentName;",
24442             ">;)V"
24443         }
24444     .end annotation
24446     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->getCalledPreBootReceiversFile()Ljava/io/File;
24448     move-result-object v3
24450     const/4 v4, 0x0
24452     const/4 v0, 0x0
24454     :try_start_6
24455     const-string v7, "ActivityManager"
24457     const-string v8, "Writing new set of last done pre-boot receivers..."
24459     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
24461     new-instance v5, Ljava/io/FileOutputStream;
24463     invoke-direct {v5, v3}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
24464     :try_end_12
24465     .catchall {:try_start_6 .. :try_end_12} :catchall_81
24466     .catch Ljava/io/IOException; {:try_start_6 .. :try_end_12} :catch_68
24468     :try_start_12
24469     new-instance v1, Ljava/io/DataOutputStream;
24471     new-instance v7, Ljava/io/BufferedOutputStream;
24473     const/16 v8, 0x800
24475     invoke-direct {v7, v5, v8}, Ljava/io/BufferedOutputStream;-><init>(Ljava/io/OutputStream;I)V
24477     invoke-direct {v1, v7}, Ljava/io/DataOutputStream;-><init>(Ljava/io/OutputStream;)V
24478     :try_end_1e
24479     .catchall {:try_start_12 .. :try_end_1e} :catchall_95
24480     .catch Ljava/io/IOException; {:try_start_12 .. :try_end_1e} :catch_9c
24482     const/16 v7, 0x2710
24484     :try_start_20
24485     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeInt(I)V
24487     sget-object v7, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
24489     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
24491     sget-object v7, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String;
24493     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
24495     sget-object v7, Landroid/os/Build$VERSION;->INCREMENTAL:Ljava/lang/String;
24497     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
24499     invoke-virtual {p0}, Ljava/util/ArrayList;->size()I
24501     move-result v7
24503     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeInt(I)V
24505     const/4 v6, 0x0
24507     :goto_3a
24508     invoke-virtual {p0}, Ljava/util/ArrayList;->size()I
24510     move-result v7
24512     if-ge v6, v7, :cond_5d
24514     invoke-virtual {p0, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
24516     move-result-object v7
24518     check-cast v7, Landroid/content/ComponentName;
24520     invoke-virtual {v7}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
24522     move-result-object v7
24524     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
24526     invoke-virtual {p0, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
24528     move-result-object v7
24530     check-cast v7, Landroid/content/ComponentName;
24532     invoke-virtual {v7}, Landroid/content/ComponentName;->getClassName()Ljava/lang/String;
24534     move-result-object v7
24536     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
24537     :try_end_5a
24538     .catchall {:try_start_20 .. :try_end_5a} :catchall_98
24539     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_5a} :catch_9f
24541     add-int/lit8 v6, v6, 0x1
24543     goto :goto_3a
24545     :cond_5d
24546     invoke-static {v5}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
24548     if-eqz v1, :cond_65
24550     :try_start_62
24551     invoke-virtual {v1}, Ljava/io/DataOutputStream;->close()V
24552     :try_end_65
24553     .catch Ljava/io/IOException; {:try_start_62 .. :try_end_65} :catch_90
24555     :cond_65
24556     :goto_65
24557     move-object v0, v1
24559     move-object v4, v5
24561     :cond_67
24562     :goto_67
24563     return-void
24565     :catch_68
24566     move-exception v2
24568     :goto_69
24569     :try_start_69
24570     const-string v7, "ActivityManager"
24572     const-string v8, "Failure writing last done pre-boot receivers"
24574     invoke-static {v7, v8, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
24576     invoke-virtual {v3}, Ljava/io/File;->delete()Z
24577     :try_end_73
24578     .catchall {:try_start_69 .. :try_end_73} :catchall_81
24580     invoke-static {v4}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
24582     if-eqz v0, :cond_67
24584     :try_start_78
24585     invoke-virtual {v0}, Ljava/io/DataOutputStream;->close()V
24586     :try_end_7b
24587     .catch Ljava/io/IOException; {:try_start_78 .. :try_end_7b} :catch_7c
24589     goto :goto_67
24591     :catch_7c
24592     move-exception v2
24594     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
24596     goto :goto_67
24598     :catchall_81
24599     move-exception v7
24601     :goto_82
24602     invoke-static {v4}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
24604     if-eqz v0, :cond_8a
24606     :try_start_87
24607     invoke-virtual {v0}, Ljava/io/DataOutputStream;->close()V
24608     :try_end_8a
24609     .catch Ljava/io/IOException; {:try_start_87 .. :try_end_8a} :catch_8b
24611     :cond_8a
24612     :goto_8a
24613     throw v7
24615     :catch_8b
24616     move-exception v2
24618     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
24620     goto :goto_8a
24622     :catch_90
24623     move-exception v2
24625     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
24627     goto :goto_65
24629     :catchall_95
24630     move-exception v7
24632     move-object v4, v5
24634     goto :goto_82
24636     :catchall_98
24637     move-exception v7
24639     move-object v0, v1
24641     move-object v4, v5
24643     goto :goto_82
24645     :catch_9c
24646     move-exception v2
24648     move-object v4, v5
24650     goto :goto_69
24652     :catch_9f
24653     move-exception v2
24655     move-object v0, v1
24657     move-object v4, v5
24659     goto :goto_69
24660 .end method
24663 # virtual methods
24664 .method public final activityDestroyed(Landroid/os/IBinder;)V
24665     .registers 3
24667     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24669     invoke-virtual {v0, p1}, Lcom/android/server/am/ActivityStack;->activityDestroyed(Landroid/os/IBinder;)V
24671     return-void
24672 .end method
24674 .method public final activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
24675     .registers 9
24677     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24679     move-result-wide v0
24681     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24683     const/4 v4, 0x0
24685     invoke-virtual {v3, p1, v4, p2}, Lcom/android/server/am/ActivityStack;->activityIdleInternal(Landroid/os/IBinder;ZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord;
24687     move-result-object v2
24689     if-eqz p3, :cond_21
24691     monitor-enter p0
24693     :try_start_e
24694     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
24696     iget-object v4, v2, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
24698     if-ne v3, v4, :cond_20
24700     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
24701     :try_end_16
24702     .catchall {:try_start_e .. :try_end_16} :catchall_25
24704     if-eqz v3, :cond_20
24706     :try_start_18
24707     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
24709     invoke-virtual {v3}, Landroid/os/ParcelFileDescriptor;->close()V
24710     :try_end_1d
24711     .catchall {:try_start_18 .. :try_end_1d} :catchall_25
24712     .catch Ljava/io/IOException; {:try_start_18 .. :try_end_1d} :catch_28
24714     :goto_1d
24715     :try_start_1d
24716     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
24718     :cond_20
24719     monitor-exit p0
24720     :try_end_21
24721     .catchall {:try_start_1d .. :try_end_21} :catchall_25
24723     :cond_21
24724     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24726     return-void
24728     :catchall_25
24729     move-exception v3
24731     :try_start_26
24732     monitor-exit p0
24733     :try_end_27
24734     .catchall {:try_start_26 .. :try_end_27} :catchall_25
24736     throw v3
24738     :catch_28
24739     move-exception v3
24741     goto :goto_1d
24742 .end method
24744 .method public final activityPaused(Landroid/os/IBinder;)V
24745     .registers 6
24747     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24749     move-result-wide v0
24751     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24753     const/4 v3, 0x0
24755     invoke-virtual {v2, p1, v3}, Lcom/android/server/am/ActivityStack;->activityPaused(Landroid/os/IBinder;Z)V
24757     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24759     return-void
24760 .end method
24762 .method public final activitySlept(Landroid/os/IBinder;)V
24763     .registers 6
24765     const/4 v2, 0x0
24767     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24769     move-result-wide v0
24771     monitor-enter p0
24773     :try_start_6
24774     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24776     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
24778     move-result-object v2
24780     if-eqz v2, :cond_13
24782     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24784     invoke-virtual {v3, v2}, Lcom/android/server/am/ActivityStack;->activitySleptLocked(Lcom/android/server/am/ActivityRecord;)V
24786     :cond_13
24787     monitor-exit p0
24788     :try_end_14
24789     .catchall {:try_start_6 .. :try_end_14} :catchall_18
24791     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24793     return-void
24795     :catchall_18
24796     move-exception v3
24798     :try_start_19
24799     monitor-exit p0
24800     :try_end_1a
24801     .catchall {:try_start_19 .. :try_end_1a} :catchall_18
24803     throw v3
24804 .end method
24806 .method public final activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
24807     .registers 13
24809     const/4 v2, 0x0
24811     if-eqz p2, :cond_11
24813     invoke-virtual {p2}, Landroid/os/Bundle;->hasFileDescriptors()Z
24815     move-result v0
24817     if-eqz v0, :cond_11
24819     new-instance v0, Ljava/lang/IllegalArgumentException;
24821     const-string v2, "File descriptors passed in Bundle"
24823     invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
24825     throw v0
24827     :cond_11
24828     const/4 v1, 0x0
24830     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24832     move-result-wide v6
24834     monitor-enter p0
24836     :try_start_17
24837     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
24839     invoke-virtual {v0, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
24841     move-result-object v1
24843     if-eqz v1, :cond_24
24845     iget-object v0, v1, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
24847     invoke-virtual {v0, v1, p2, p3, p4}, Lcom/android/server/am/ActivityStack;->activityStoppedLocked(Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
24849     :cond_24
24850     monitor-exit p0
24851     :try_end_25
24852     .catchall {:try_start_17 .. :try_end_25} :catchall_35
24854     if-eqz v1, :cond_2e
24856     const/4 v5, 0x0
24858     move-object v0, p0
24860     move-object v3, v2
24862     move-object v4, v2
24864     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
24866     :cond_2e
24867     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
24869     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24871     return-void
24873     :catchall_35
24874     move-exception v0
24876     :try_start_36
24877     monitor-exit p0
24878     :try_end_37
24879     .catchall {:try_start_36 .. :try_end_37} :catchall_35
24881     throw v0
24882 .end method
24884 .method final addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
24885     .registers 10
24887     const/4 v4, 0x0
24889     const/4 v6, 0x1
24891     if-nez p2, :cond_5e
24893     iget-object v2, p1, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
24895     iget v3, p1, Landroid/content/pm/ApplicationInfo;->uid:I
24897     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
24899     move-result-object v0
24901     :goto_c
24902     if-nez v0, :cond_27
24904     invoke-virtual {p0, v4, p1, v4, p2}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
24906     move-result-object v0
24908     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
24910     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
24912     iget v4, v0, Lcom/android/server/am/ProcessRecord;->uid:I
24914     invoke-virtual {v2, v3, v4, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
24916     if-eqz p2, :cond_24
24918     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
24920     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
24922     invoke-virtual {v2, v3, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
24924     :cond_24
24925     invoke-virtual {p0, v0, v6, v6}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
24927     :cond_27
24928     :try_start_27
24929     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
24931     move-result-object v2
24933     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24935     const/4 v4, 0x0
24937     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
24939     invoke-static {v5}, Landroid/os/UserId;->getUserId(I)I
24941     move-result v5
24943     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
24944     :try_end_37
24945     .catch Landroid/os/RemoteException; {:try_start_27 .. :try_end_37} :catch_86
24946     .catch Ljava/lang/IllegalArgumentException; {:try_start_27 .. :try_end_37} :catch_60
24948     :goto_37
24949     iget v2, p1, Landroid/content/pm/ApplicationInfo;->flags:I
24951     and-int/lit8 v2, v2, 0x9
24953     const/16 v3, 0x9
24955     if-ne v2, v3, :cond_45
24957     iput-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
24959     const/16 v2, -0xc
24961     iput v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
24963     :cond_45
24964     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
24966     if-nez v2, :cond_5d
24968     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
24970     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
24972     move-result v2
24974     if-gez v2, :cond_5d
24976     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
24978     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
24980     const-string v2, "added application"
24982     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
24984     invoke-direct {p0, v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
24986     :cond_5d
24987     return-object v0
24989     :cond_5e
24990     const/4 v0, 0x0
24992     goto :goto_c
24994     :catch_60
24995     move-exception v1
24997     const-string v2, "ActivityManager"
24999     new-instance v3, Ljava/lang/StringBuilder;
25001     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
25003     const-string v4, "Failed trying to unstop package "
25005     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25007     move-result-object v3
25009     iget-object v4, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
25011     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25013     move-result-object v3
25015     const-string v4, ": "
25017     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25019     move-result-object v3
25021     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
25023     move-result-object v3
25025     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25027     move-result-object v3
25029     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
25031     goto :goto_37
25033     :catch_86
25034     move-exception v2
25036     goto :goto_37
25037 .end method
25039 .method public addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
25040     .registers 19
25042     new-instance v1, Ljava/lang/StringBuilder;
25044     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
25046     invoke-static {p2}, Lcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
25048     move-result-object v2
25050     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25052     move-result-object v1
25054     const-string v2, "_"
25056     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25058     move-result-object v1
25060     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25062     move-result-object v1
25064     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25066     move-result-object v7
25068     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
25070     const-string v2, "dropbox"
25072     invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
25074     move-result-object v8
25076     check-cast v8, Landroid/os/DropBoxManager;
25078     if-eqz v8, :cond_2d
25080     invoke-virtual {v8, v7}, Landroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z
25082     move-result v1
25084     if-nez v1, :cond_2e
25086     :cond_2d
25087     :goto_2d
25088     return-void
25090     :cond_2e
25091     new-instance v4, Ljava/lang/StringBuilder;
25093     const/16 v1, 0x400
25095     invoke-direct {v4, v1}, Ljava/lang/StringBuilder;-><init>(I)V
25097     invoke-direct {p0, p2, p3, v4}, Lcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
25099     if-eqz p4, :cond_4b
25101     const-string v1, "Activity: "
25103     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25105     move-result-object v1
25107     iget-object v2, p4, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
25109     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25111     move-result-object v1
25113     const-string v2, "\n"
25115     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25117     :cond_4b
25118     if-eqz p5, :cond_6c
25120     iget-object v1, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
25122     if-eqz v1, :cond_6c
25124     iget-object v1, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
25126     iget v1, v1, Lcom/android/server/am/ProcessRecord;->pid:I
25128     iget v2, p2, Lcom/android/server/am/ProcessRecord;->pid:I
25130     if-eq v1, v2, :cond_6c
25132     const-string v1, "Parent-Process: "
25134     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25136     move-result-object v1
25138     iget-object v2, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
25140     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25142     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25144     move-result-object v1
25146     const-string v2, "\n"
25148     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25150     :cond_6c
25151     if-eqz p5, :cond_81
25153     if-eq p5, p4, :cond_81
25155     const-string v1, "Parent-Activity: "
25157     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25159     move-result-object v1
25161     iget-object v2, p5, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
25163     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25165     move-result-object v1
25167     const-string v2, "\n"
25169     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25171     :cond_81
25172     if-eqz p6, :cond_92
25174     const-string v1, "Subject: "
25176     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25178     move-result-object v1
25180     invoke-virtual {v1, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25182     move-result-object v1
25184     const-string v2, "\n"
25186     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25188     :cond_92
25189     const-string v1, "Build: "
25191     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25193     move-result-object v1
25195     sget-object v2, Landroid/os/Build;->FINGERPRINT:Ljava/lang/String;
25197     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25199     move-result-object v1
25201     const-string v2, "\n"
25203     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25205     invoke-static {}, Landroid/os/Debug;->isDebuggerConnected()Z
25207     move-result v1
25209     if-eqz v1, :cond_ae
25211     const-string v1, "Debugger: Connected\n"
25213     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25215     :cond_ae
25216     const-string v1, "\n"
25218     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25220     new-instance v0, Lcom/android/server/am/ActivityManagerService$13;
25222     new-instance v1, Ljava/lang/StringBuilder;
25224     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
25226     const-string v2, "Error dump: "
25228     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25230     move-result-object v1
25232     invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25234     move-result-object v1
25236     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25238     move-result-object v2
25240     move-object v1, p0
25242     move-object/from16 v3, p7
25244     move-object/from16 v5, p8
25246     move-object/from16 v6, p9
25248     invoke-direct/range {v0 .. v8}, Lcom/android/server/am/ActivityManagerService$13;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/String;Landroid/os/DropBoxManager;)V
25250     if-nez p2, :cond_d9
25252     invoke-virtual {v0}, Ljava/lang/Thread;->run()V
25254     goto/16 :goto_2d
25256     :cond_d9
25257     invoke-virtual {v0}, Ljava/lang/Thread;->start()V
25259     goto/16 :goto_2d
25260 .end method
25262 .method final addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
25263     .registers 8
25265     const/4 v0, 0x0
25267     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
25269     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
25271     move-result v2
25273     add-int/lit8 v1, v2, -0x1
25275     :goto_9
25276     if-ltz v1, :cond_23
25278     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
25280     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25282     move-result-object v2
25284     check-cast v2, Lcom/android/server/am/ProcessRecord;
25286     iget-wide v2, v2, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
25288     iget-wide v4, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
25290     cmp-long v2, v2, v4
25292     if-gez v2, :cond_2c
25294     const/4 v0, 0x1
25296     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
25298     add-int/lit8 v3, v1, 0x1
25300     invoke-virtual {v2, v3, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
25302     :cond_23
25303     if-nez v0, :cond_2b
25305     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
25307     const/4 v3, 0x0
25309     invoke-virtual {v2, v3, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
25311     :cond_2b
25312     return-void
25314     :cond_2c
25315     add-int/lit8 v1, v1, -0x1
25317     goto :goto_9
25318 .end method
25320 .method final addRecentTaskLocked(Lcom/android/server/am/TaskRecord;)V
25321     .registers 8
25323     const/4 v5, 0x0
25325     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25327     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
25329     move-result v0
25331     if-lez v0, :cond_12
25333     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25335     invoke-virtual {v3, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25337     move-result-object v3
25339     if-ne v3, p1, :cond_12
25341     :goto_11
25342     return-void
25344     :cond_12
25345     const/4 v1, 0x0
25347     :goto_13
25348     if-ge v1, v0, :cond_50
25350     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25352     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25354     move-result-object v2
25356     check-cast v2, Lcom/android/server/am/TaskRecord;
25358     iget v3, p1, Lcom/android/server/am/TaskRecord;->userId:I
25360     iget v4, v2, Lcom/android/server/am/TaskRecord;->userId:I
25362     if-ne v3, v4, :cond_4d
25364     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
25366     if-eqz v3, :cond_31
25368     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
25370     iget-object v4, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
25372     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
25374     move-result v3
25376     if-nez v3, :cond_3f
25378     :cond_31
25379     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
25381     if-eqz v3, :cond_4d
25383     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
25385     iget-object v4, v2, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
25387     invoke-virtual {v3, v4}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
25389     move-result v3
25391     if-eqz v3, :cond_4d
25393     :cond_3f
25394     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25396     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
25398     add-int/lit8 v1, v1, -0x1
25400     add-int/lit8 v0, v0, -0x1
25402     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
25404     if-nez v3, :cond_4d
25406     move-object p1, v2
25408     :cond_4d
25409     add-int/lit8 v1, v1, 0x1
25411     goto :goto_13
25413     :cond_50
25414     const/16 v3, 0x14
25416     if-lt v0, v3, :cond_5b
25418     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25420     add-int/lit8 v4, v0, -0x1
25422     invoke-virtual {v3, v4}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
25424     :cond_5b
25425     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
25427     invoke-virtual {v3, v5, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
25429     goto :goto_11
25430 .end method
25432 .method final appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
25433     .registers 15
25435     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
25437     const/4 v8, 0x0
25439     aget v9, v7, v8
25441     add-int/lit8 v9, v9, 0x1
25443     aput v9, v7, v8
25445     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
25447     invoke-virtual {v7}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
25449     move-result-object v6
25451     monitor-enter v6
25453     :try_start_10
25454     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
25456     iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I
25458     invoke-virtual {v6, v7, p2}, Lcom/android/internal/os/BatteryStatsImpl;->noteProcessDiedLocked(II)V
25460     monitor-exit v6
25461     :try_end_18
25462     .catchall {:try_start_10 .. :try_end_18} :catchall_e6
25464     iget v7, p1, Lcom/android/server/am/ProcessRecord;->pid:I
25466     if-ne v7, p2, :cond_fe
25468     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
25470     if-eqz v7, :cond_fe
25472     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
25474     invoke-interface {v7}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
25476     move-result-object v7
25478     invoke-interface {p3}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
25480     move-result-object v8
25482     if-ne v7, v8, :cond_fe
25484     iget-boolean v7, p1, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
25486     if-nez v7, :cond_5a
25488     const-string v7, "ActivityManager"
25490     new-instance v8, Ljava/lang/StringBuilder;
25492     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
25494     const-string v9, "Process "
25496     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25498     move-result-object v8
25500     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25502     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25504     move-result-object v8
25506     const-string v9, " (pid "
25508     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25510     move-result-object v8
25512     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25514     move-result-object v8
25516     const-string v9, ") has died."
25518     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25520     move-result-object v8
25522     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25524     move-result-object v8
25526     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
25528     :cond_5a
25529     const/16 v7, 0x753b
25531     const/4 v8, 0x2
25533     new-array v8, v8, [Ljava/lang/Object;
25535     const/4 v9, 0x0
25537     iget v10, p1, Lcom/android/server/am/ProcessRecord;->pid:I
25539     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
25541     move-result-object v10
25543     aput-object v10, v8, v9
25545     const/4 v9, 0x1
25547     iget-object v10, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25549     aput-object v10, v8, v9
25551     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
25553     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
25555     if-nez v7, :cond_e9
25557     const/4 v0, 0x1
25559     :goto_75
25560     const/4 v7, 0x0
25562     const/4 v8, 0x1
25564     invoke-direct {p0, p1, v7, v8}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
25566     if-eqz v0, :cond_fd
25568     const/4 v1, 0x0
25570     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25572     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
25574     move-result v7
25576     add-int/lit8 v2, v7, -0x1
25578     :goto_85
25579     if-ltz v2, :cond_9a
25581     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25583     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25585     move-result-object v5
25587     check-cast v5, Lcom/android/server/am/ProcessRecord;
25589     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
25591     if-eqz v7, :cond_eb
25593     iget v7, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
25595     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
25597     if-lt v7, v8, :cond_eb
25599     const/4 v1, 0x1
25601     :cond_9a
25602     if-nez v1, :cond_fd
25604     const/16 v7, 0x7541
25606     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25608     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
25610     move-result v8
25612     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(II)I
25614     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
25616     move-result-wide v3
25618     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25620     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
25622     move-result v7
25624     add-int/lit8 v2, v7, -0x1
25626     :goto_b3
25627     if-ltz v2, :cond_f3
25629     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25631     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25633     move-result-object v5
25635     check-cast v5, Lcom/android/server/am/ProcessRecord;
25637     if-eq v5, p1, :cond_e3
25639     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
25641     if-eqz v7, :cond_e3
25643     iget-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
25645     const-wide/32 v9, 0xea60
25647     add-long/2addr v7, v9
25649     cmp-long v7, v7, v3
25651     if-gtz v7, :cond_e3
25653     iget v7, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
25655     const/4 v8, 0x3
25657     if-gt v7, v8, :cond_ee
25659     const-wide/16 v7, 0x0
25661     iput-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
25663     :goto_d6
25664     const/4 v7, 0x1
25666     iput-boolean v7, v5, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
25668     iput-wide v3, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
25670     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
25672     invoke-virtual {v7, v5}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
25674     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
25676     :cond_e3
25677     add-int/lit8 v2, v2, -0x1
25679     goto :goto_b3
25681     :catchall_e6
25682     move-exception v7
25684     :try_start_e7
25685     monitor-exit v6
25686     :try_end_e8
25687     .catchall {:try_start_e7 .. :try_end_e8} :catchall_e6
25689     throw v7
25691     :cond_e9
25692     const/4 v0, 0x0
25694     goto :goto_75
25696     :cond_eb
25697     add-int/lit8 v2, v2, -0x1
25699     goto :goto_85
25701     :cond_ee
25702     iget-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
25704     iput-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
25706     goto :goto_d6
25708     :cond_f3
25709     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
25711     const/16 v8, 0x21
25713     invoke-virtual {v7, v8}, Landroid/os/Handler;->sendEmptyMessage(I)Z
25715     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
25717     :cond_fd
25718     :goto_fd
25719     return-void
25721     :cond_fe
25722     iget v7, p1, Lcom/android/server/am/ProcessRecord;->pid:I
25724     if-eq v7, p2, :cond_fd
25726     const-string v7, "ActivityManager"
25728     new-instance v8, Ljava/lang/StringBuilder;
25730     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
25732     const-string v9, "Process "
25734     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25736     move-result-object v8
25738     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25740     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25742     move-result-object v8
25744     const-string v9, " (pid "
25746     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25748     move-result-object v8
25750     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25752     move-result-object v8
25754     const-string v9, ") has died and restarted (pid "
25756     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25758     move-result-object v8
25760     iget v9, p1, Lcom/android/server/am/ProcessRecord;->pid:I
25762     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25764     move-result-object v8
25766     const-string v9, ")."
25768     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25770     move-result-object v8
25772     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25774     move-result-object v8
25776     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
25778     const/16 v7, 0x753b
25780     const/4 v8, 0x2
25782     new-array v8, v8, [Ljava/lang/Object;
25784     const/4 v9, 0x0
25786     iget v10, p1, Lcom/android/server/am/ProcessRecord;->pid:I
25788     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
25790     move-result-object v10
25792     aput-object v10, v8, v9
25794     const/4 v9, 0x1
25796     iget-object v10, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25798     aput-object v10, v8, v9
25800     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
25802     goto :goto_fd
25803 .end method
25805 .method final appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
25806     .registers 32
25808     new-instance v15, Ljava/util/ArrayList;
25810     const/4 v2, 0x5
25812     invoke-direct {v15, v2}, Ljava/util/ArrayList;-><init>(I)V
25814     new-instance v18, Landroid/util/SparseArray;
25816     const/16 v2, 0x14
25818     move-object/from16 v0, v18
25820     invoke-direct {v0, v2}, Landroid/util/SparseArray;-><init>(I)V
25822     move-object/from16 v0, p0
25824     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
25826     if-eqz v2, :cond_38
25828     :try_start_15
25829     move-object/from16 v0, p0
25831     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
25833     move-object/from16 v0, p1
25835     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25837     move-object/from16 v0, p1
25839     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25841     move-object/from16 v0, p4
25843     invoke-interface {v2, v3, v4, v0}, Landroid/app/IActivityController;->appEarlyNotResponding(Ljava/lang/String;ILjava/lang/String;)I
25845     move-result v25
25847     if-gez v25, :cond_38
25849     move-object/from16 v0, p1
25851     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25853     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
25855     if-eq v2, v3, :cond_38
25857     move-object/from16 v0, p1
25859     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25861     invoke-static {v2}, Landroid/os/Process;->killProcess(I)V
25862     :try_end_38
25863     .catch Landroid/os/RemoteException; {:try_start_15 .. :try_end_38} :catch_6e
25865     :cond_38
25866     :goto_38
25867     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
25869     move-result-wide v12
25871     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
25873     monitor-enter p0
25875     :try_start_40
25876     move-object/from16 v0, p0
25878     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
25880     if-eqz v2, :cond_75
25882     const-string v2, "ActivityManager"
25884     new-instance v3, Ljava/lang/StringBuilder;
25886     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
25888     const-string v4, "During shutdown skipping ANR: "
25890     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25892     move-result-object v3
25894     move-object/from16 v0, p1
25896     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
25898     move-result-object v3
25900     const-string v4, " "
25902     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25904     move-result-object v3
25906     move-object/from16 v0, p4
25908     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25910     move-result-object v3
25912     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25914     move-result-object v3
25916     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
25918     monitor-exit p0
25919     :try_end_6d
25920     .catchall {:try_start_40 .. :try_end_6d} :catchall_a3
25922     :cond_6d
25923     :goto_6d
25924     return-void
25926     :catch_6e
25927     move-exception v14
25929     const/4 v2, 0x0
25931     move-object/from16 v0, p0
25933     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
25935     goto :goto_38
25937     :cond_75
25938     :try_start_75
25939     move-object/from16 v0, p1
25941     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
25943     if-eqz v2, :cond_a6
25945     const-string v2, "ActivityManager"
25947     new-instance v3, Ljava/lang/StringBuilder;
25949     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
25951     const-string v4, "Skipping duplicate ANR: "
25953     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25955     move-result-object v3
25957     move-object/from16 v0, p1
25959     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
25961     move-result-object v3
25963     const-string v4, " "
25965     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25967     move-result-object v3
25969     move-object/from16 v0, p4
25971     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25973     move-result-object v3
25975     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25977     move-result-object v3
25979     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
25981     monitor-exit p0
25983     goto :goto_6d
25985     :catchall_a3
25986     move-exception v2
25988     monitor-exit p0
25989     :try_end_a5
25990     .catchall {:try_start_75 .. :try_end_a5} :catchall_a3
25992     throw v2
25994     :cond_a6
25995     :try_start_a6
25996     move-object/from16 v0, p1
25998     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
26000     if-eqz v2, :cond_d4
26002     const-string v2, "ActivityManager"
26004     new-instance v3, Ljava/lang/StringBuilder;
26006     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
26008     const-string v4, "Crashing app skipping ANR: "
26010     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26012     move-result-object v3
26014     move-object/from16 v0, p1
26016     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26018     move-result-object v3
26020     const-string v4, " "
26022     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26024     move-result-object v3
26026     move-object/from16 v0, p4
26028     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26030     move-result-object v3
26032     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26034     move-result-object v3
26036     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
26038     monitor-exit p0
26040     goto :goto_6d
26042     :cond_d4
26043     const/4 v2, 0x1
26045     move-object/from16 v0, p1
26047     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
26049     const/16 v2, 0x7538
26051     const/4 v3, 0x4
26053     new-array v3, v3, [Ljava/lang/Object;
26055     const/4 v4, 0x0
26057     move-object/from16 v0, p1
26059     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26061     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26063     move-result-object v5
26065     aput-object v5, v3, v4
26067     const/4 v4, 0x1
26069     move-object/from16 v0, p1
26071     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26073     aput-object v5, v3, v4
26075     const/4 v4, 0x2
26077     move-object/from16 v0, p1
26079     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
26081     iget v5, v5, Landroid/content/pm/ApplicationInfo;->flags:I
26083     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26085     move-result-object v5
26087     aput-object v5, v3, v4
26089     const/4 v4, 0x3
26091     aput-object p4, v3, v4
26093     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
26095     move-object/from16 v0, p1
26097     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26099     invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26101     move-result-object v2
26103     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
26105     move-object/from16 v0, p1
26107     iget v0, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26109     move/from16 v21, v0
26111     if-eqz p3, :cond_12c
26113     move-object/from16 v0, p3
26115     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
26117     if-eqz v2, :cond_12c
26119     move-object/from16 v0, p3
26121     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
26123     iget v2, v2, Lcom/android/server/am/ProcessRecord;->pid:I
26125     if-lez v2, :cond_12c
26127     move-object/from16 v0, p3
26129     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
26131     iget v0, v2, Lcom/android/server/am/ProcessRecord;->pid:I
26133     move/from16 v21, v0
26135     :cond_12c
26136     move-object/from16 v0, p1
26138     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26140     move/from16 v0, v21
26142     if-eq v0, v2, :cond_13b
26144     invoke-static/range {v21 .. v21}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26146     move-result-object v2
26148     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
26150     :cond_13b
26151     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26153     move-object/from16 v0, p1
26155     iget v3, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26157     if-eq v2, v3, :cond_152
26159     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26161     move/from16 v0, v21
26163     if-eq v2, v0, :cond_152
26165     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26167     invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26169     move-result-object v2
26171     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
26173     :cond_152
26174     move-object/from16 v0, p0
26176     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
26178     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
26180     move-result v2
26182     add-int/lit8 v16, v2, -0x1
26184     :goto_15c
26185     if-ltz v16, :cond_1a8
26187     move-object/from16 v0, p0
26189     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
26191     move/from16 v0, v16
26193     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
26195     move-result-object v24
26197     check-cast v24, Lcom/android/server/am/ProcessRecord;
26199     if-eqz v24, :cond_19b
26201     move-object/from16 v0, v24
26203     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
26205     if-eqz v2, :cond_19b
26207     move-object/from16 v0, v24
26209     iget v0, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26211     move/from16 v22, v0
26213     if-lez v22, :cond_19b
26215     move-object/from16 v0, p1
26217     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26219     move/from16 v0, v22
26221     if-eq v0, v2, :cond_19b
26223     move/from16 v0, v22
26225     move/from16 v1, v21
26227     if-eq v0, v1, :cond_19b
26229     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26231     move/from16 v0, v22
26233     if-eq v0, v2, :cond_19b
26235     move-object/from16 v0, v24
26237     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
26239     if-eqz v2, :cond_19e
26241     invoke-static/range {v22 .. v22}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26243     move-result-object v2
26245     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
26247     :cond_19b
26248     :goto_19b
26249     add-int/lit8 v16, v16, -0x1
26251     goto :goto_15c
26253     :cond_19e
26254     sget-object v2, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
26256     move-object/from16 v0, v18
26258     move/from16 v1, v22
26260     invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
26262     goto :goto_19b
26264     :cond_1a8
26265     monitor-exit p0
26266     :try_end_1a9
26267     .catchall {:try_start_a6 .. :try_end_1a9} :catchall_a3
26269     new-instance v17, Ljava/lang/StringBuilder;
26271     invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;-><init>()V
26273     const/4 v2, 0x0
26275     move-object/from16 v0, v17
26277     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->setLength(I)V
26279     const-string v2, "ANR in "
26281     move-object/from16 v0, v17
26283     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26285     move-result-object v2
26287     move-object/from16 v0, p1
26289     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26291     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26293     if-eqz p2, :cond_1e0
26295     move-object/from16 v0, p2
26297     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
26299     if-eqz v2, :cond_1e0
26301     const-string v2, " ("
26303     move-object/from16 v0, v17
26305     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26307     move-result-object v2
26309     move-object/from16 v0, p2
26311     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
26313     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26315     move-result-object v2
26317     const-string v3, ")"
26319     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26321     :cond_1e0
26322     const-string v2, "\n"
26324     move-object/from16 v0, v17
26326     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26328     if-eqz p4, :cond_1fc
26330     const-string v2, "Reason: "
26332     move-object/from16 v0, v17
26334     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26336     move-result-object v2
26338     move-object/from16 v0, p4
26340     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26342     move-result-object v2
26344     const-string v3, "\n"
26346     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26348     :cond_1fc
26349     if-eqz p3, :cond_219
26351     move-object/from16 v0, p3
26353     move-object/from16 v1, p2
26355     if-eq v0, v1, :cond_219
26357     const-string v2, "Parent: "
26359     move-object/from16 v0, v17
26361     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26363     move-result-object v2
26365     move-object/from16 v0, p3
26367     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
26369     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26371     move-result-object v2
26373     const-string v3, "\n"
26375     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26377     :cond_219
26378     new-instance v23, Lcom/android/internal/os/ProcessStats;
26380     const/4 v2, 0x1
26382     move-object/from16 v0, v23
26384     invoke-direct {v0, v2}, Lcom/android/internal/os/ProcessStats;-><init>(Z)V
26386     const/4 v2, 0x1
26388     const/4 v3, 0x0
26390     move-object/from16 v0, v23
26392     move-object/from16 v1, v18
26394     invoke-static {v2, v15, v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->dumpStackTraces(ZLjava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)Ljava/io/File;
26396     move-result-object v10
26398     const/4 v9, 0x0
26400     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
26402     move-object/from16 v0, p0
26404     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
26406     monitor-enter v3
26408     :try_start_234
26409     move-object/from16 v0, p0
26411     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
26413     invoke-virtual {v2, v12, v13}, Lcom/android/internal/os/ProcessStats;->printCurrentState(J)Ljava/lang/String;
26415     move-result-object v9
26417     monitor-exit v3
26418     :try_end_23d
26419     .catchall {:try_start_234 .. :try_end_23d} :catchall_32d
26421     invoke-virtual/range {v23 .. v23}, Lcom/android/internal/os/ProcessStats;->printCurrentLoad()Ljava/lang/String;
26423     move-result-object v2
26425     move-object/from16 v0, v17
26427     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26429     move-object/from16 v0, v17
26431     invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26433     move-object/from16 v0, v23
26435     invoke-virtual {v0, v12, v13}, Lcom/android/internal/os/ProcessStats;->printCurrentState(J)Ljava/lang/String;
26437     move-result-object v2
26439     move-object/from16 v0, v17
26441     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26443     const-string v2, "ActivityManager"
26445     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26447     move-result-object v3
26449     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
26451     if-nez v10, :cond_269
26453     move-object/from16 v0, p1
26455     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26457     const/4 v3, 0x3
26459     invoke-static {v2, v3}, Landroid/os/Process;->sendSignal(II)V
26461     :cond_269
26462     const-string v3, "anr"
26464     move-object/from16 v0, p1
26466     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26468     const/4 v11, 0x0
26470     move-object/from16 v2, p0
26472     move-object/from16 v4, p1
26474     move-object/from16 v6, p2
26476     move-object/from16 v7, p3
26478     move-object/from16 v8, p4
26480     invoke-virtual/range {v2 .. v11}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
26482     move-object/from16 v0, p0
26484     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
26486     if-eqz v2, :cond_2b2
26488     :try_start_283
26489     move-object/from16 v0, p0
26491     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
26493     move-object/from16 v0, p1
26495     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26497     move-object/from16 v0, p1
26499     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26501     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26503     move-result-object v5
26505     invoke-interface {v2, v3, v4, v5}, Landroid/app/IActivityController;->appNotResponding(Ljava/lang/String;ILjava/lang/String;)I
26507     move-result v25
26509     if-eqz v25, :cond_2b2
26511     if-gez v25, :cond_6d
26513     move-object/from16 v0, p1
26515     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26517     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26519     if-eq v2, v3, :cond_6d
26521     move-object/from16 v0, p1
26523     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26525     invoke-static {v2}, Landroid/os/Process;->killProcess(I)V
26526     :try_end_2aa
26527     .catch Landroid/os/RemoteException; {:try_start_283 .. :try_end_2aa} :catch_2ac
26529     goto/16 :goto_6d
26531     :catch_2ac
26532     move-exception v14
26534     const/4 v2, 0x0
26536     move-object/from16 v0, p0
26538     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
26540     :cond_2b2
26541     move-object/from16 v0, p0
26543     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
26545     invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
26547     move-result-object v2
26549     const-string v3, "anr_show_background"
26551     const/4 v4, 0x0
26553     invoke-static {v2, v3, v4}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
26555     move-result v2
26557     if-eqz v2, :cond_330
26559     const/16 v26, 0x1
26561     :goto_2c5
26562     monitor-enter p0
26564     if-nez v26, :cond_333
26566     :try_start_2c8
26567     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
26569     move-result v2
26571     if-nez v2, :cond_333
26573     move-object/from16 v0, p1
26575     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26577     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26579     if-eq v2, v3, :cond_333
26581     const-string v2, "ActivityManager"
26583     new-instance v3, Ljava/lang/StringBuilder;
26585     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
26587     const-string v4, "Killing "
26589     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26591     move-result-object v3
26593     move-object/from16 v0, p1
26595     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26597     move-result-object v3
26599     const-string v4, ": background ANR"
26601     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26603     move-result-object v3
26605     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26607     move-result-object v3
26609     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
26611     const/16 v2, 0x7547
26613     const/4 v3, 0x4
26615     new-array v3, v3, [Ljava/lang/Object;
26617     const/4 v4, 0x0
26619     move-object/from16 v0, p1
26621     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26623     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26625     move-result-object v5
26627     aput-object v5, v3, v4
26629     const/4 v4, 0x1
26631     move-object/from16 v0, p1
26633     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26635     aput-object v5, v3, v4
26637     const/4 v4, 0x2
26639     move-object/from16 v0, p1
26641     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
26643     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26645     move-result-object v5
26647     aput-object v5, v3, v4
26649     const/4 v4, 0x3
26651     const-string v5, "background ANR"
26653     aput-object v5, v3, v4
26655     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
26657     move-object/from16 v0, p1
26659     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26661     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
26663     monitor-exit p0
26665     goto/16 :goto_6d
26667     :catchall_32a
26668     move-exception v2
26670     monitor-exit p0
26671     :try_end_32c
26672     .catchall {:try_start_2c8 .. :try_end_32c} :catchall_32a
26674     throw v2
26676     :catchall_32d
26677     move-exception v2
26679     :try_start_32e
26680     monitor-exit v3
26681     :try_end_32f
26682     .catchall {:try_start_32e .. :try_end_32f} :catchall_32d
26684     throw v2
26686     :cond_330
26687     const/16 v26, 0x0
26689     goto :goto_2c5
26691     :cond_333
26692     if-eqz p2, :cond_390
26694     :try_start_335
26695     move-object/from16 v0, p2
26697     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
26699     move-object v3, v2
26701     :goto_33a
26702     if-eqz p4, :cond_393
26704     new-instance v2, Ljava/lang/StringBuilder;
26706     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
26708     const-string v4, "ANR "
26710     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26712     move-result-object v2
26714     move-object/from16 v0, p4
26716     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26718     move-result-object v2
26720     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26722     move-result-object v2
26724     :goto_351
26725     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26727     move-result-object v4
26729     move-object/from16 v0, p0
26731     move-object/from16 v1, p1
26733     invoke-direct {v0, v1, v3, v2, v4}, Lcom/android/server/am/ActivityManagerService;->makeAppNotRespondingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
26735     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
26737     move-result-object v20
26739     new-instance v19, Ljava/util/HashMap;
26741     invoke-direct/range {v19 .. v19}, Ljava/util/HashMap;-><init>()V
26743     const/4 v2, 0x2
26745     move-object/from16 v0, v20
26747     iput v2, v0, Landroid/os/Message;->what:I
26749     move-object/from16 v0, v19
26751     move-object/from16 v1, v20
26753     iput-object v0, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
26755     const-string v2, "app"
26757     move-object/from16 v0, v19
26759     move-object/from16 v1, p1
26761     invoke-virtual {v0, v2, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
26763     if-eqz p2, :cond_384
26765     const-string v2, "activity"
26767     move-object/from16 v0, v19
26769     move-object/from16 v1, p2
26771     invoke-virtual {v0, v2, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
26773     :cond_384
26774     move-object/from16 v0, p0
26776     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
26778     move-object/from16 v0, v20
26780     invoke-virtual {v2, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
26782     monitor-exit p0
26784     goto/16 :goto_6d
26786     :cond_390
26787     const/4 v2, 0x0
26789     move-object v3, v2
26791     goto :goto_33a
26793     :cond_393
26794     const-string v2, "ANR"
26795     :try_end_395
26796     .catchall {:try_start_335 .. :try_end_395} :catchall_32a
26798     goto :goto_351
26799 .end method
26801 .method public final attachApplication(Landroid/app/IApplicationThread;)V
26802     .registers 6
26804     monitor-enter p0
26806     :try_start_1
26807     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
26809     move-result v0
26811     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
26813     move-result-wide v1
26815     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;I)Z
26817     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
26819     monitor-exit p0
26821     return-void
26823     :catchall_11
26824     move-exception v3
26826     monitor-exit p0
26827     :try_end_13
26828     .catchall {:try_start_1 .. :try_end_13} :catchall_11
26830     throw v3
26831 .end method
26833 .method public backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;)V
26834     .registers 10
26836     monitor-enter p0
26838     :try_start_1
26839     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
26841     invoke-virtual {p1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
26843     move-result v4
26845     if-nez v4, :cond_29
26847     const-string v4, "ActivityManager"
26849     new-instance v5, Ljava/lang/StringBuilder;
26851     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
26853     const-string v6, "Backup agent created for "
26855     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26857     move-result-object v5
26859     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26861     move-result-object v5
26863     const-string v6, " but not requested!"
26865     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26867     move-result-object v5
26869     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26871     move-result-object v5
26873     invoke-static {v4, v5}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
26875     monitor-exit p0
26877     :goto_28
26878     return-void
26880     :cond_29
26881     monitor-exit p0
26882     :try_end_2a
26883     .catchall {:try_start_1 .. :try_end_2a} :catchall_3f
26885     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
26887     move-result-wide v2
26889     :try_start_2e
26890     const-string v4, "backup"
26892     invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
26894     move-result-object v4
26896     invoke-static {v4}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
26898     move-result-object v0
26900     invoke-interface {v0, p1, p2}, Landroid/app/backup/IBackupManager;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V
26901     :try_end_3b
26902     .catchall {:try_start_2e .. :try_end_3b} :catchall_4e
26903     .catch Landroid/os/RemoteException; {:try_start_2e .. :try_end_3b} :catch_53
26904     .catch Ljava/lang/Exception; {:try_start_2e .. :try_end_3b} :catch_42
26906     :goto_3b
26907     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
26909     goto :goto_28
26911     :catchall_3f
26912     move-exception v4
26914     :try_start_40
26915     monitor-exit p0
26916     :try_end_41
26917     .catchall {:try_start_40 .. :try_end_41} :catchall_3f
26919     throw v4
26921     :catch_42
26922     move-exception v1
26924     :try_start_43
26925     const-string v4, "ActivityManager"
26927     const-string v5, "Exception trying to deliver BackupAgent binding: "
26929     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
26931     invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
26932     :try_end_4d
26933     .catchall {:try_start_43 .. :try_end_4d} :catchall_4e
26935     goto :goto_3b
26937     :catchall_4e
26938     move-exception v4
26940     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
26942     throw v4
26944     :catch_53
26945     move-exception v4
26947     goto :goto_3b
26948 .end method
26950 .method public batteryNeedsCpuUpdate()V
26951     .registers 1
26953     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
26955     return-void
26956 .end method
26958 .method public batteryPowerChanged(Z)V
26959     .registers 4
26961     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
26963     monitor-enter p0
26965     :try_start_4
26966     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
26968     monitor-enter v1
26969     :try_end_7
26970     .catchall {:try_start_4 .. :try_end_7} :catchall_f
26972     :try_start_7
26973     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
26975     monitor-exit v1
26976     :try_end_a
26977     .catchall {:try_start_7 .. :try_end_a} :catchall_c
26979     :try_start_a
26980     monitor-exit p0
26981     :try_end_b
26982     .catchall {:try_start_a .. :try_end_b} :catchall_f
26984     return-void
26986     :catchall_c
26987     move-exception v0
26989     :try_start_d
26990     monitor-exit v1
26991     :try_end_e
26992     .catchall {:try_start_d .. :try_end_e} :catchall_c
26994     :try_start_e
26995     throw v0
26997     :catchall_f
26998     move-exception v0
27000     monitor-exit p0
27001     :try_end_11
27002     .catchall {:try_start_e .. :try_end_11} :catchall_f
27004     throw v0
27005 .end method
27007 .method public bindBackupAgent(Landroid/content/pm/ApplicationInfo;I)Z
27008     .registers 19
27010     const-string v2, "android.permission.BACKUP"
27012     const-string v3, "startBackupAgent"
27014     move-object/from16 v0, p0
27016     invoke-virtual {v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
27018     monitor-enter p0
27020     const/4 v14, 0x0
27022     :try_start_b
27023     move-object/from16 v0, p0
27025     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
27027     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
27029     move-result-object v15
27031     monitor-enter v15
27032     :try_end_14
27033     .catchall {:try_start_b .. :try_end_14} :catchall_83
27035     :try_start_14
27036     move-object/from16 v0, p1
27038     iget v2, v0, Landroid/content/pm/ApplicationInfo;->uid:I
27040     move-object/from16 v0, p1
27042     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27044     move-object/from16 v0, p1
27046     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->name:Ljava/lang/String;
27048     invoke-virtual {v15, v2, v3, v4}, Lcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
27050     move-result-object v14
27052     monitor-exit v15
27053     :try_end_25
27054     .catchall {:try_start_14 .. :try_end_25} :catchall_80
27056     :try_start_25
27057     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
27059     move-result-object v2
27061     move-object/from16 v0, p1
27063     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27065     const/4 v4, 0x0
27067     move-object/from16 v0, p1
27069     iget v5, v0, Landroid/content/pm/ApplicationInfo;->uid:I
27071     invoke-static {v5}, Landroid/os/UserId;->getUserId(I)I
27073     move-result v5
27075     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
27076     :try_end_39
27077     .catchall {:try_start_25 .. :try_end_39} :catchall_83
27078     .catch Landroid/os/RemoteException; {:try_start_25 .. :try_end_39} :catch_e1
27079     .catch Ljava/lang/IllegalArgumentException; {:try_start_25 .. :try_end_39} :catch_86
27081     :goto_39
27082     :try_start_39
27083     new-instance v13, Lcom/android/server/am/BackupRecord;
27085     move-object/from16 v0, p1
27087     move/from16 v1, p2
27089     invoke-direct {v13, v14, v0, v1}, Lcom/android/server/am/BackupRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/pm/ApplicationInfo;I)V
27091     if-nez p2, :cond_ae
27093     new-instance v8, Landroid/content/ComponentName;
27095     move-object/from16 v0, p1
27097     iget-object v2, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27099     move-object/from16 v0, p1
27101     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->backupAgentName:Ljava/lang/String;
27103     invoke-direct {v8, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
27105     :goto_51
27106     move-object/from16 v0, p1
27108     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
27110     const/4 v5, 0x0
27112     const/4 v6, 0x0
27114     const-string v7, "backup"
27116     const/4 v9, 0x0
27118     const/4 v10, 0x0
27120     move-object/from16 v2, p0
27122     move-object/from16 v4, p1
27124     invoke-virtual/range {v2 .. v10}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
27126     move-result-object v12
27128     if-nez v12, :cond_b8
27130     const-string v2, "ActivityManager"
27132     new-instance v3, Ljava/lang/StringBuilder;
27134     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
27136     const-string v4, "Unable to start backup agent process "
27138     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27140     move-result-object v3
27142     invoke-virtual {v3, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27144     move-result-object v3
27146     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27148     move-result-object v3
27150     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
27152     const/4 v2, 0x0
27154     monitor-exit p0
27155     :try_end_7f
27156     .catchall {:try_start_39 .. :try_end_7f} :catchall_83
27158     :goto_7f
27159     return v2
27161     :catchall_80
27162     move-exception v2
27164     :try_start_81
27165     monitor-exit v15
27166     :try_end_82
27167     .catchall {:try_start_81 .. :try_end_82} :catchall_80
27169     :try_start_82
27170     throw v2
27172     :catchall_83
27173     move-exception v2
27175     monitor-exit p0
27176     :try_end_85
27177     .catchall {:try_start_82 .. :try_end_85} :catchall_83
27179     throw v2
27181     :catch_86
27182     move-exception v11
27184     :try_start_87
27185     const-string v2, "ActivityManager"
27187     new-instance v3, Ljava/lang/StringBuilder;
27189     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
27191     const-string v4, "Failed trying to unstop package "
27193     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27195     move-result-object v3
27197     move-object/from16 v0, p1
27199     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27201     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27203     move-result-object v3
27205     const-string v4, ": "
27207     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27209     move-result-object v3
27211     invoke-virtual {v3, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27213     move-result-object v3
27215     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27217     move-result-object v3
27219     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27221     goto :goto_39
27223     :cond_ae
27224     new-instance v8, Landroid/content/ComponentName;
27226     const-string v2, "android"
27228     const-string v3, "FullBackupAgent"
27230     invoke-direct {v8, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
27232     goto :goto_51
27234     :cond_b8
27235     iput-object v12, v13, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
27237     move-object/from16 v0, p0
27239     iput-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
27241     move-object/from16 v0, p1
27243     iget-object v2, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27245     move-object/from16 v0, p0
27247     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
27249     move-object/from16 v0, p0
27251     invoke-direct {v0, v12}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
27253     iget-object v2, v12, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
27254     :try_end_cd
27255     .catchall {:try_start_87 .. :try_end_cd} :catchall_83
27257     if-eqz v2, :cond_dc
27259     :try_start_cf
27260     iget-object v2, v12, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
27262     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
27264     move-result-object v3
27266     move-object/from16 v0, p1
27268     move/from16 v1, p2
27270     invoke-interface {v2, v0, v3, v1}, Landroid/app/IApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
27271     :try_end_dc
27272     .catchall {:try_start_cf .. :try_end_dc} :catchall_83
27273     .catch Landroid/os/RemoteException; {:try_start_cf .. :try_end_dc} :catch_df
27275     :cond_dc
27276     :goto_dc
27277     :try_start_dc
27278     monitor-exit p0
27279     :try_end_dd
27280     .catchall {:try_start_dc .. :try_end_dd} :catchall_83
27282     const/4 v2, 0x1
27284     goto :goto_7f
27286     :catch_df
27287     move-exception v2
27289     goto :goto_dc
27291     :catch_e1
27292     move-exception v2
27294     goto/16 :goto_39
27295 .end method
27297 .method public bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;II)I
27298     .registers 27
27300     const-string v4, "bindService"
27302     move-object/from16 v0, p0
27304     invoke-virtual {v0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
27306     if-eqz p3, :cond_18
27308     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->hasFileDescriptors()Z
27310     move-result v4
27312     const/4 v5, 0x1
27314     if-ne v4, v5, :cond_18
27316     new-instance v4, Ljava/lang/IllegalArgumentException;
27318     const-string v5, "File descriptors passed in Intent"
27320     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
27322     throw v4
27324     :cond_18
27325     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27327     move-result v4
27329     move-object/from16 v0, p0
27331     move/from16 v1, p7
27333     invoke-direct {v0, v4, v1}, Lcom/android/server/am/ActivityManagerService;->checkValidCaller(II)V
27335     monitor-enter p0
27337     :try_start_24
27338     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
27340     move-result-object v11
27342     if-nez v11, :cond_62
27344     new-instance v4, Ljava/lang/SecurityException;
27346     new-instance v5, Ljava/lang/StringBuilder;
27348     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
27350     const-string v6, "Unable to find app for caller "
27352     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27354     move-result-object v5
27356     move-object/from16 v0, p1
27358     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27360     move-result-object v5
27362     const-string v6, " (pid="
27364     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27366     move-result-object v5
27368     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27370     move-result v6
27372     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27374     move-result-object v5
27376     const-string v6, ") when binding service "
27378     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27380     move-result-object v5
27382     move-object/from16 v0, p3
27384     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27386     move-result-object v5
27388     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27390     move-result-object v5
27392     invoke-direct {v4, v5}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
27394     throw v4
27396     :catchall_5f
27397     move-exception v4
27399     monitor-exit p0
27400     :try_end_61
27401     .catchall {:try_start_24 .. :try_end_61} :catchall_5f
27403     throw v4
27405     :cond_62
27406     const/4 v9, 0x0
27408     if-eqz p2, :cond_8e
27410     :try_start_65
27411     move-object/from16 v0, p0
27413     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
27415     move-object/from16 v0, p2
27417     invoke-virtual {v4, v0}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
27419     move-result-object v9
27421     if-nez v9, :cond_8e
27423     const-string v4, "ActivityManager"
27425     new-instance v5, Ljava/lang/StringBuilder;
27427     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
27429     const-string v6, "Binding with unknown activity: "
27431     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27433     move-result-object v5
27435     move-object/from16 v0, p2
27437     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27439     move-result-object v5
27441     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27443     move-result-object v5
27445     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27447     const/4 v4, 0x0
27449     monitor-exit p0
27451     :goto_8d
27452     return v4
27454     :cond_8e
27455     const/4 v12, 0x0
27457     const/4 v8, 0x0
27459     iget-object v4, v11, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
27461     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
27462     :try_end_94
27463     .catchall {:try_start_65 .. :try_end_94} :catchall_5f
27465     const/16 v5, 0x3e8
27467     if-ne v4, v5, :cond_b5
27469     :try_start_98
27470     const-string v4, "android.intent.extra.client_intent"
27472     move-object/from16 v0, p3
27474     invoke-virtual {v0, v4}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;
27476     move-result-object v4
27478     move-object v0, v4
27480     check-cast v0, Landroid/app/PendingIntent;
27482     move-object v8, v0
27483     :try_end_a4
27484     .catchall {:try_start_98 .. :try_end_a4} :catchall_5f
27485     .catch Ljava/lang/RuntimeException; {:try_start_98 .. :try_end_a4} :catch_248
27487     :goto_a4
27488     if-eqz v8, :cond_b5
27490     :try_start_a6
27491     const-string v4, "android.intent.extra.client_label"
27493     const/4 v5, 0x0
27495     move-object/from16 v0, p3
27497     invoke-virtual {v0, v4, v5}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
27499     move-result v12
27501     if-eqz v12, :cond_b5
27503     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->cloneFilter()Landroid/content/Intent;
27505     move-result-object p3
27507     :cond_b5
27508     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27510     move-result v5
27512     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27514     move-result v6
27516     move-object/from16 v2, p0
27518     move-object/from16 v3, p3
27520     move-object/from16 v4, p4
27522     move/from16 v7, p7
27524     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
27526     move-result-object v17
27528     if-nez v17, :cond_ce
27530     const/4 v4, 0x0
27532     monitor-exit p0
27534     goto :goto_8d
27536     :cond_ce
27537     move-object/from16 v0, v17
27539     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
27541     if-nez v4, :cond_d7
27543     const/4 v4, -0x1
27545     monitor-exit p0
27547     goto :goto_8d
27549     :cond_d7
27550     move-object/from16 v0, v17
27552     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
27554     iget-object v4, v4, Lcom/android/server/am/ServiceRecord;->processName:Ljava/lang/String;
27556     move-object/from16 v0, v17
27558     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
27560     iget-object v5, v5, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
27562     move-object/from16 v0, p0
27564     invoke-virtual {v0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
27566     move-result v4
27568     if-eqz v4, :cond_100
27570     const/16 p7, 0x0
27572     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27574     move-result v5
27576     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27578     move-result v6
27580     const/4 v7, 0x0
27582     move-object/from16 v2, p0
27584     move-object/from16 v3, p3
27586     move-object/from16 v4, p4
27588     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
27590     move-result-object v17
27592     :cond_100
27593     move-object/from16 v0, v17
27595     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
27597     move-object/from16 v18, v0
27599     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
27601     move-result-wide v15
27603     move-object/from16 v0, p0
27605     move-object/from16 v1, v18
27607     invoke-direct {v0, v1}, Lcom/android/server/am/ActivityManagerService;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)Z
27609     move-result v4
27611     if-eqz v4, :cond_114
27613     :cond_114
27614     move-object/from16 v0, v18
27616     move-object/from16 v1, p3
27618     invoke-virtual {v0, v1, v11}, Lcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
27620     move-result-object v3
27622     new-instance v2, Lcom/android/server/am/ConnectionRecord;
27624     move-object v4, v9
27626     move-object/from16 v5, p5
27628     move/from16 v6, p6
27630     move v7, v12
27632     invoke-direct/range {v2 .. v8}, Lcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V
27634     invoke-interface/range {p5 .. p5}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
27636     move-result-object v10
27638     move-object/from16 v0, v18
27640     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
27642     invoke-virtual {v4, v10}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
27644     move-result-object v13
27646     check-cast v13, Ljava/util/ArrayList;
27648     if-nez v13, :cond_143
27650     new-instance v13, Ljava/util/ArrayList;
27652     invoke-direct {v13}, Ljava/util/ArrayList;-><init>()V
27654     move-object/from16 v0, v18
27656     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
27658     invoke-virtual {v4, v10, v13}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
27660     :cond_143
27661     invoke-virtual {v13, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
27663     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->connections:Ljava/util/HashSet;
27665     invoke-virtual {v4, v2}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
27667     if-eqz v9, :cond_15d
27669     iget-object v4, v9, Lcom/android/server/am/ActivityRecord;->connections:Ljava/util/HashSet;
27671     if-nez v4, :cond_158
27673     new-instance v4, Ljava/util/HashSet;
27675     invoke-direct {v4}, Ljava/util/HashSet;-><init>()V
27677     iput-object v4, v9, Lcom/android/server/am/ActivityRecord;->connections:Ljava/util/HashSet;
27679     :cond_158
27680     iget-object v4, v9, Lcom/android/server/am/ActivityRecord;->connections:Ljava/util/HashSet;
27682     invoke-virtual {v4, v2}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
27684     :cond_15d
27685     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
27687     iget-object v4, v4, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
27689     invoke-virtual {v4, v2}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
27691     iget v4, v2, Lcom/android/server/am/ConnectionRecord;->flags:I
27693     and-int/lit8 v4, v4, 0x8
27695     if-eqz v4, :cond_16f
27697     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
27699     const/4 v5, 0x1
27701     iput-boolean v5, v4, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
27703     :cond_16f
27704     move-object/from16 v0, p0
27706     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
27708     invoke-virtual {v4, v10}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
27710     move-result-object v13
27712     check-cast v13, Ljava/util/ArrayList;
27714     if-nez v13, :cond_187
27716     new-instance v13, Ljava/util/ArrayList;
27718     invoke-direct {v13}, Ljava/util/ArrayList;-><init>()V
27720     move-object/from16 v0, p0
27722     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
27724     invoke-virtual {v4, v10, v13}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
27726     :cond_187
27727     invoke-virtual {v13, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
27729     and-int/lit8 v4, p6, 0x1
27731     if-eqz v4, :cond_1a9
27733     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
27735     move-result-wide v4
27737     move-object/from16 v0, v18
27739     iput-wide v4, v0, Lcom/android/server/am/ServiceRecord;->lastActivity:J
27741     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->getFlags()I
27743     move-result v4
27745     const/4 v5, 0x0
27747     move-object/from16 v0, p0
27749     move-object/from16 v1, v18
27751     invoke-direct {v0, v1, v4, v5}, Lcom/android/server/am/ActivityManagerService;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
27753     move-result v4
27755     if-nez v4, :cond_1a9
27757     const/4 v4, 0x0
27759     monitor-exit p0
27761     goto/16 :goto_8d
27763     :cond_1a9
27764     move-object/from16 v0, v18
27766     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
27768     if-eqz v4, :cond_1b8
27770     move-object/from16 v0, v18
27772     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
27774     move-object/from16 v0, p0
27776     invoke-direct {v0, v4}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
27778     :cond_1b8
27779     move-object/from16 v0, v18
27781     iget-object v4, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
27783     if-eqz v4, :cond_237
27785     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27787     iget-boolean v4, v4, Lcom/android/server/am/IntentBindRecord;->received:Z
27788     :try_end_1c2
27789     .catchall {:try_start_a6 .. :try_end_1c2} :catchall_5f
27791     if-eqz v4, :cond_237
27793     :try_start_1c4
27794     iget-object v4, v2, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
27796     move-object/from16 v0, v18
27798     iget-object v5, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
27800     iget-object v6, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27802     iget-object v6, v6, Lcom/android/server/am/IntentBindRecord;->binder:Landroid/os/IBinder;
27804     invoke-interface {v4, v5, v6}, Landroid/app/IServiceConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
27805     :try_end_1d1
27806     .catchall {:try_start_1c4 .. :try_end_1d1} :catchall_5f
27807     .catch Ljava/lang/Exception; {:try_start_1c4 .. :try_end_1d1} :catch_1f3
27809     :goto_1d1
27810     :try_start_1d1
27811     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27813     iget-object v4, v4, Lcom/android/server/am/IntentBindRecord;->apps:Ljava/util/HashMap;
27815     invoke-virtual {v4}, Ljava/util/HashMap;->size()I
27817     move-result v4
27819     const/4 v5, 0x1
27821     if-ne v4, v5, :cond_1ec
27823     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27825     iget-boolean v4, v4, Lcom/android/server/am/IntentBindRecord;->doRebind:Z
27827     if-eqz v4, :cond_1ec
27829     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27831     const/4 v5, 0x1
27833     move-object/from16 v0, p0
27835     move-object/from16 v1, v18
27837     invoke-direct {v0, v1, v4, v5}, Lcom/android/server/am/ActivityManagerService;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Z)Z
27839     :cond_1ec
27840     :goto_1ec
27841     invoke-static/range {v15 .. v16}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27843     monitor-exit p0
27845     const/4 v4, 0x1
27847     goto/16 :goto_8d
27849     :catch_1f3
27850     move-exception v14
27852     const-string v4, "ActivityManager"
27854     new-instance v5, Ljava/lang/StringBuilder;
27856     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
27858     const-string v6, "Failure sending service "
27860     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27862     move-result-object v5
27864     move-object/from16 v0, v18
27866     iget-object v6, v0, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
27868     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27870     move-result-object v5
27872     const-string v6, " to connection "
27874     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27876     move-result-object v5
27878     iget-object v6, v2, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
27880     invoke-interface {v6}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
27882     move-result-object v6
27884     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27886     move-result-object v5
27888     const-string v6, " (in "
27890     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27892     move-result-object v5
27894     iget-object v6, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
27896     iget-object v6, v6, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
27898     iget-object v6, v6, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
27900     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27902     move-result-object v5
27904     const-string v6, ")"
27906     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27908     move-result-object v5
27910     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27912     move-result-object v5
27914     invoke-static {v4, v5, v14}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
27916     goto :goto_1d1
27918     :cond_237
27919     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27921     iget-boolean v4, v4, Lcom/android/server/am/IntentBindRecord;->requested:Z
27923     if-nez v4, :cond_1ec
27925     iget-object v4, v3, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
27927     const/4 v5, 0x0
27929     move-object/from16 v0, p0
27931     move-object/from16 v1, v18
27933     invoke-direct {v0, v1, v4, v5}, Lcom/android/server/am/ActivityManagerService;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Z)Z
27934     :try_end_247
27935     .catchall {:try_start_1d1 .. :try_end_247} :catchall_5f
27937     goto :goto_1ec
27939     :catch_248
27940     move-exception v4
27942     goto/16 :goto_a4
27943 .end method
27945 .method public final broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
27946     .registers 32
27948     const-string v2, "broadcastIntent"
27950     move-object/from16 v0, p0
27952     invoke-virtual {v0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
27954     monitor-enter p0
27956     :try_start_8
27957     move-object/from16 v0, p0
27959     move-object/from16 v1, p2
27961     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
27963     move-result-object p2
27965     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
27967     move-result-object v3
27969     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27971     move-result v14
27973     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27975     move-result v15
27977     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
27979     move-result-wide v17
27981     if-eqz v3, :cond_45
27983     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
27985     iget-object v4, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
27987     :goto_26
27988     move-object/from16 v2, p0
27990     move-object/from16 v5, p2
27992     move-object/from16 v6, p3
27994     move-object/from16 v7, p4
27996     move/from16 v8, p5
27998     move-object/from16 v9, p6
28000     move-object/from16 v10, p7
28002     move-object/from16 v11, p8
28004     move/from16 v12, p9
28006     move/from16 v13, p10
28008     move/from16 v16, p11
28010     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
28012     move-result v19
28014     invoke-static/range {v17 .. v18}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28016     monitor-exit p0
28018     return v19
28020     :cond_45
28021     const/4 v4, 0x0
28023     goto :goto_26
28025     :catchall_47
28026     move-exception v2
28028     monitor-exit p0
28029     :try_end_49
28030     .catchall {:try_start_8 .. :try_end_49} :catchall_47
28032     throw v2
28033 .end method
28035 .method broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
28036     .registers 33
28038     monitor-enter p0
28040     :try_start_1
28041     move-object/from16 v0, p0
28043     move-object/from16 v1, p3
28045     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
28047     move-result-object p3
28049     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
28051     move-result-wide v17
28053     const/4 v3, 0x0
28055     const/4 v14, -0x1
28057     move-object/from16 v2, p0
28059     move-object/from16 v4, p1
28061     move-object/from16 v5, p3
28063     move-object/from16 v6, p4
28065     move-object/from16 v7, p5
28067     move/from16 v8, p6
28069     move-object/from16 v9, p7
28071     move-object/from16 v10, p8
28073     move-object/from16 v11, p9
28075     move/from16 v12, p10
28077     move/from16 v13, p11
28079     move/from16 v15, p2
28081     move/from16 v16, p12
28083     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
28085     move-result v19
28087     invoke-static/range {v17 .. v18}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28089     monitor-exit p0
28091     return v19
28093     :catchall_32
28094     move-exception v2
28096     monitor-exit p0
28097     :try_end_34
28098     .catchall {:try_start_1 .. :try_end_34} :catchall_32
28100     throw v2
28101 .end method
28103 .method broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
28104     .registers 5
28106     invoke-virtual {p1}, Landroid/content/Intent;->getFlags()I
28108     move-result v1
28110     const/high16 v2, 0x1000
28112     and-int/2addr v1, v2
28114     if-eqz v1, :cond_f
28116     const/4 v0, 0x1
28118     :goto_a
28119     if-eqz v0, :cond_11
28121     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
28123     :goto_e
28124     return-object v1
28126     :cond_f
28127     const/4 v0, 0x0
28129     goto :goto_a
28131     :cond_11
28132     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
28134     goto :goto_e
28135 .end method
28137 .method broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
28138     .registers 7
28140     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
28142     array-length v2, v0
28144     const/4 v1, 0x0
28146     :goto_4
28147     if-ge v1, v2, :cond_12
28149     aget-object v3, v0, v1
28151     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
28153     move-result-object v4
28155     if-eqz v4, :cond_f
28157     :goto_e
28158     return-object v4
28160     :cond_f
28161     add-int/lit8 v1, v1, 0x1
28163     goto :goto_4
28165     :cond_12
28166     const/4 v4, 0x0
28168     goto :goto_e
28169 .end method
28171 .method public cancelIntentSender(Landroid/content/IIntentSender;)V
28172     .registers 10
28174     instance-of v5, p1, Lcom/android/server/am/PendingIntentRecord;
28176     if-nez v5, :cond_5
28178     :goto_4
28179     return-void
28181     :cond_5
28182     monitor-enter p0
28184     :try_start_6
28185     move-object v0, p1
28187     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
28189     move-object v3, v0
28190     :try_end_a
28191     .catchall {:try_start_6 .. :try_end_a} :catchall_69
28193     :try_start_a
28194     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
28196     move-result-object v5
28198     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
28200     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
28202     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
28204     move-result v7
28206     invoke-interface {v5, v6, v7}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
28208     move-result v4
28210     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
28212     move-result v5
28214     invoke-static {v4, v5}, Landroid/os/UserId;->isSameApp(II)Z
28216     move-result v5
28218     if-nez v5, :cond_6c
28220     new-instance v5, Ljava/lang/StringBuilder;
28222     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
28224     const-string v6, "Permission Denial: cancelIntentSender() from pid="
28226     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28228     move-result-object v5
28230     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
28232     move-result v6
28234     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28236     move-result-object v5
28238     const-string v6, ", uid="
28240     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28242     move-result-object v5
28244     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
28246     move-result v6
28248     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28250     move-result-object v5
28252     const-string v6, " is not allowed to cancel packges "
28254     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28256     move-result-object v5
28258     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
28260     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
28262     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28264     move-result-object v5
28266     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28268     move-result-object v2
28270     const-string v5, "ActivityManager"
28272     invoke-static {v5, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
28274     new-instance v5, Ljava/lang/SecurityException;
28276     invoke-direct {v5, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
28278     throw v5
28279     :try_end_62
28280     .catchall {:try_start_a .. :try_end_62} :catchall_69
28281     .catch Landroid/os/RemoteException; {:try_start_a .. :try_end_62} :catch_62
28283     :catch_62
28284     move-exception v1
28286     :try_start_63
28287     new-instance v5, Ljava/lang/SecurityException;
28289     invoke-direct {v5, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/Throwable;)V
28291     throw v5
28293     :catchall_69
28294     move-exception v5
28296     monitor-exit p0
28297     :try_end_6b
28298     .catchall {:try_start_63 .. :try_end_6b} :catchall_69
28300     throw v5
28302     :cond_6c
28303     const/4 v5, 0x1
28305     :try_start_6d
28306     invoke-virtual {p0, v3, v5}, Lcom/android/server/am/ActivityManagerService;->cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V
28308     monitor-exit p0
28309     :try_end_71
28310     .catchall {:try_start_6d .. :try_end_71} :catchall_69
28312     goto :goto_4
28313 .end method
28315 .method cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V
28316     .registers 5
28318     const/4 v0, 0x1
28320     iput-boolean v0, p1, Lcom/android/server/am/PendingIntentRecord;->canceled:Z
28322     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
28324     iget-object v1, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
28326     invoke-virtual {v0, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
28328     if-eqz p2, :cond_1d
28330     iget-object v0, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
28332     iget-object v0, v0, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
28334     if-eqz v0, :cond_1d
28336     iget-object v0, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
28338     iget-object v0, v0, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
28340     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
28342     iget-object v1, p1, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
28344     invoke-virtual {v0, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
28346     :cond_1d
28347     return-void
28348 .end method
28350 .method checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
28351     .registers 8
28353     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
28355     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
28357     move-result v0
28359     const/4 v3, 0x0
28361     const/4 v2, 0x0
28363     :goto_8
28364     if-ge v2, v0, :cond_2b
28366     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
28368     invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
28370     move-result-object v1
28372     check-cast v1, Lcom/android/server/am/ContentProviderRecord;
28374     iget-object v4, v1, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
28376     if-ne v4, p1, :cond_1d
28378     if-nez p2, :cond_20
28380     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->bad:Z
28382     if-nez v4, :cond_20
28384     const/4 v3, 0x1
28386     :cond_1d
28387     :goto_1d
28388     add-int/lit8 v2, v2, 0x1
28390     goto :goto_8
28392     :cond_20
28393     const/4 v4, 0x1
28395     invoke-direct {p0, p1, v1, v4}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
28397     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
28399     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
28401     move-result v0
28403     goto :goto_1d
28405     :cond_2b
28406     return v3
28407 .end method
28409 .method checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
28410     .registers 11
28412     const/4 v5, 0x1
28414     iget-wide v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
28416     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
28418     move-result-wide v2
28420     cmp-long v0, v0, v2
28422     if-gez v0, :cond_c
28424     :cond_b
28425     :goto_b
28426     return v5
28428     :cond_c
28429     const-string v1, "android.permission.STOP_APP_SWITCHES"
28431     const/4 v4, -0x1
28433     move-object v0, p0
28435     move v2, p1
28437     move v3, p2
28439     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
28441     move-result v6
28443     if-eqz v6, :cond_b
28445     const-string v0, "ActivityManager"
28447     new-instance v1, Ljava/lang/StringBuilder;
28449     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
28451     invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28453     move-result-object v1
28455     const-string v2, " request from "
28457     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28459     move-result-object v1
28461     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28463     move-result-object v1
28465     const-string v2, " stopped"
28467     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28469     move-result-object v1
28471     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28473     move-result-object v1
28475     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
28477     const/4 v5, 0x0
28479     goto :goto_b
28480 .end method
28482 .method checkCallingPermission(Ljava/lang/String;)I
28483     .registers 4
28485     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
28487     move-result v0
28489     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
28491     move-result v1
28493     invoke-static {v1}, Landroid/os/UserId;->getAppId(I)I
28495     move-result v1
28497     invoke-virtual {p0, p1, v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
28499     move-result v0
28501     return v0
28502 .end method
28504 .method checkComponentPermission(Ljava/lang/String;IIIZ)I
28505     .registers 10
28507     sget-object v1, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
28509     invoke-virtual {v1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
28511     move-result-object v0
28513     check-cast v0, Lcom/android/server/am/ActivityManagerService$Identity;
28515     if-eqz v0, :cond_3a
28517     const-string v1, "ActivityManager"
28519     new-instance v2, Ljava/lang/StringBuilder;
28521     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
28523     const-string v3, "checkComponentPermission() adjusting {pid,uid} to {"
28525     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28527     move-result-object v2
28529     iget v3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
28531     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28533     move-result-object v2
28535     const-string v3, ","
28537     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28539     move-result-object v2
28541     iget v3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
28543     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28545     move-result-object v2
28547     const-string v3, "}"
28549     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28551     move-result-object v2
28553     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28555     move-result-object v2
28557     invoke-static {v1, v2}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
28559     iget p3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
28561     iget p2, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
28563     :cond_3a
28564     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
28566     if-ne p2, v1, :cond_40
28568     const/4 v1, 0x0
28570     :goto_3f
28571     return v1
28573     :cond_40
28574     invoke-static {p1, p3, p4, p5}, Landroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ)I
28576     move-result v1
28578     goto :goto_3f
28579 .end method
28581 .method final checkExcessivePowerUsageLocked(Z)V
28582     .registers 29
28584     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
28586     move-object/from16 v0, p0
28588     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
28590     invoke-virtual {v4}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
28592     move-result-object v3
28594     move/from16 v23, p1
28596     move/from16 v22, p1
28598     move-object/from16 v0, p0
28600     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
28602     const-wide/16 v10, 0x0
28604     cmp-long v4, v4, v10
28606     if-nez v4, :cond_1b
28608     const/16 v23, 0x0
28610     :cond_1b
28611     move-object/from16 v0, p0
28613     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
28615     const-wide/16 v10, 0x0
28617     cmp-long v4, v4, v10
28619     if-nez v4, :cond_27
28621     const/16 v22, 0x0
28623     :cond_27
28624     invoke-virtual {v3}, Lcom/android/internal/os/BatteryStatsImpl;->isScreenOn()Z
28626     move-result v4
28628     if-eqz v4, :cond_2f
28630     const/16 v23, 0x0
28632     :cond_2f
28633     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
28635     move-result-wide v18
28637     move-object/from16 v0, p0
28639     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
28641     sub-long v6, v18, v4
28643     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
28645     move-result-wide v20
28647     move-object/from16 v0, p0
28649     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
28651     sub-long v13, v20, v4
28653     move-wide/from16 v0, v18
28655     move-object/from16 v2, p0
28657     iput-wide v0, v2, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
28659     move-wide/from16 v0, v20
28661     move-object/from16 v2, p0
28663     iput-wide v0, v2, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
28665     const-wide/32 v4, 0x493e0
28667     cmp-long v4, v6, v4
28669     if-gez v4, :cond_58
28671     const/16 v23, 0x0
28673     :cond_58
28674     const-wide/32 v4, 0x493e0
28676     cmp-long v4, v13, v4
28678     if-gez v4, :cond_61
28680     const/16 v22, 0x0
28682     :cond_61
28683     move-object/from16 v0, p0
28685     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
28687     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
28689     move-result v24
28691     :cond_69
28692     :goto_69
28693     if-lez v24, :cond_1e0
28695     add-int/lit8 v24, v24, -0x1
28697     move-object/from16 v0, p0
28699     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
28701     move/from16 v0, v24
28703     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
28705     move-result-object v17
28707     check-cast v17, Lcom/android/server/am/ProcessRecord;
28709     move-object/from16 v0, v17
28711     iget-boolean v4, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
28713     if-nez v4, :cond_69
28715     monitor-enter v3
28717     :try_start_80
28718     move-object/from16 v0, v17
28720     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
28722     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
28724     move-object/from16 v0, v17
28726     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
28728     move-wide/from16 v0, v18
28730     invoke-virtual {v3, v4, v5, v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
28732     move-result-wide v25
28734     monitor-exit v3
28735     :try_end_91
28736     .catchall {:try_start_80 .. :try_end_91} :catchall_133
28738     move-object/from16 v0, v17
28740     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
28742     sub-long v8, v25, v4
28744     move-object/from16 v0, v17
28746     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
28748     move-object/from16 v0, v17
28750     iget-wide v10, v0, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
28752     sub-long v15, v4, v10
28754     if-eqz v23, :cond_139
28756     const-wide/16 v4, 0x0
28758     cmp-long v4, v6, v4
28760     if-lez v4, :cond_139
28762     const-wide/16 v4, 0x64
28764     mul-long/2addr v4, v8
28766     div-long/2addr v4, v6
28768     const-wide/16 v10, 0x32
28770     cmp-long v4, v4, v10
28772     if-ltz v4, :cond_139
28774     monitor-enter v3
28776     :try_start_b4
28777     move-object/from16 v0, v17
28779     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
28781     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
28783     move-object/from16 v0, v17
28785     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
28787     invoke-virtual/range {v3 .. v9}, Lcom/android/internal/os/BatteryStatsImpl;->reportExcessiveWakeLocked(ILjava/lang/String;JJ)V
28789     monitor-exit v3
28790     :try_end_c2
28791     .catchall {:try_start_b4 .. :try_end_c2} :catchall_136
28793     const-string v4, "ActivityManager"
28795     new-instance v5, Ljava/lang/StringBuilder;
28797     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
28799     const-string v10, "Excessive wake lock in "
28801     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28803     move-result-object v5
28805     move-object/from16 v0, v17
28807     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
28809     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28811     move-result-object v5
28813     const-string v10, " (pid "
28815     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28817     move-result-object v5
28819     move-object/from16 v0, v17
28821     iget v10, v0, Lcom/android/server/am/ProcessRecord;->pid:I
28823     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28825     move-result-object v5
28827     const-string v10, "): held "
28829     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28831     move-result-object v5
28833     invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
28835     move-result-object v5
28837     const-string v10, " during "
28839     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28841     move-result-object v5
28843     invoke-virtual {v5, v6, v7}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
28845     move-result-object v5
28847     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28849     move-result-object v5
28851     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
28853     const/16 v4, 0x7547
28855     const/4 v5, 0x4
28857     new-array v5, v5, [Ljava/lang/Object;
28859     const/4 v10, 0x0
28861     move-object/from16 v0, v17
28863     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
28865     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
28867     move-result-object v11
28869     aput-object v11, v5, v10
28871     const/4 v10, 0x1
28873     move-object/from16 v0, v17
28875     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
28877     aput-object v11, v5, v10
28879     const/4 v10, 0x2
28881     move-object/from16 v0, v17
28883     iget v11, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
28885     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
28887     move-result-object v11
28889     aput-object v11, v5, v10
28891     const/4 v10, 0x3
28893     const-string v11, "excessive wake lock"
28895     aput-object v11, v5, v10
28897     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
28899     move-object/from16 v0, v17
28901     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
28903     invoke-static {v4}, Landroid/os/Process;->killProcessQuiet(I)V
28905     goto/16 :goto_69
28907     :catchall_133
28908     move-exception v4
28910     :try_start_134
28911     monitor-exit v3
28912     :try_end_135
28913     .catchall {:try_start_134 .. :try_end_135} :catchall_133
28915     throw v4
28917     :catchall_136
28918     move-exception v4
28920     :try_start_137
28921     monitor-exit v3
28922     :try_end_138
28923     .catchall {:try_start_137 .. :try_end_138} :catchall_136
28925     throw v4
28927     :cond_139
28928     if-eqz v22, :cond_1d0
28930     const-wide/16 v4, 0x0
28932     cmp-long v4, v13, v4
28934     if-lez v4, :cond_1d0
28936     const-wide/16 v4, 0x64
28938     mul-long/2addr v4, v15
28940     div-long/2addr v4, v13
28942     const-wide/16 v10, 0x32
28944     cmp-long v4, v4, v10
28946     if-ltz v4, :cond_1d0
28948     monitor-enter v3
28950     :try_start_14c
28951     move-object/from16 v0, v17
28953     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
28955     iget v11, v4, Landroid/content/pm/ApplicationInfo;->uid:I
28957     move-object/from16 v0, v17
28959     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
28961     move-object v10, v3
28963     invoke-virtual/range {v10 .. v16}, Lcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V
28965     monitor-exit v3
28966     :try_end_15b
28967     .catchall {:try_start_14c .. :try_end_15b} :catchall_1cd
28969     const-string v4, "ActivityManager"
28971     new-instance v5, Ljava/lang/StringBuilder;
28973     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
28975     const-string v10, "Excessive CPU in "
28977     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28979     move-result-object v5
28981     move-object/from16 v0, v17
28983     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
28985     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28987     move-result-object v5
28989     const-string v10, " (pid "
28991     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28993     move-result-object v5
28995     move-object/from16 v0, v17
28997     iget v10, v0, Lcom/android/server/am/ProcessRecord;->pid:I
28999     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
29001     move-result-object v5
29003     const-string v10, "): used "
29005     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29007     move-result-object v5
29009     move-wide v0, v15
29011     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
29013     move-result-object v5
29015     const-string v10, " during "
29017     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29019     move-result-object v5
29021     invoke-virtual {v5, v13, v14}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
29023     move-result-object v5
29025     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29027     move-result-object v5
29029     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
29031     const/16 v4, 0x7547
29033     const/4 v5, 0x4
29035     new-array v5, v5, [Ljava/lang/Object;
29037     const/4 v10, 0x0
29039     move-object/from16 v0, v17
29041     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
29043     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
29045     move-result-object v11
29047     aput-object v11, v5, v10
29049     const/4 v10, 0x1
29051     move-object/from16 v0, v17
29053     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
29055     aput-object v11, v5, v10
29057     const/4 v10, 0x2
29059     move-object/from16 v0, v17
29061     iget v11, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
29063     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
29065     move-result-object v11
29067     aput-object v11, v5, v10
29069     const/4 v10, 0x3
29071     const-string v11, "excessive cpu"
29073     aput-object v11, v5, v10
29075     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
29077     move-object/from16 v0, v17
29079     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
29081     invoke-static {v4}, Landroid/os/Process;->killProcessQuiet(I)V
29083     goto/16 :goto_69
29085     :catchall_1cd
29086     move-exception v4
29088     :try_start_1ce
29089     monitor-exit v3
29090     :try_end_1cf
29091     .catchall {:try_start_1ce .. :try_end_1cf} :catchall_1cd
29093     throw v4
29095     :cond_1d0
29096     move-wide/from16 v0, v25
29098     move-object/from16 v2, v17
29100     iput-wide v0, v2, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
29102     move-object/from16 v0, v17
29104     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
29106     move-object/from16 v0, v17
29108     iput-wide v4, v0, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
29110     goto/16 :goto_69
29112     :cond_1e0
29113     return-void
29114 .end method
29116 .method public checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;I)I
29117     .registers 11
29119     const-string v0, "checkGrantUriPermission"
29121     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
29123     monitor-enter p0
29125     const/4 v5, -0x1
29127     move-object v0, p0
29129     move v1, p1
29131     move-object v2, p2
29133     move-object v3, p3
29135     move v4, p4
29137     :try_start_c
29138     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
29140     move-result v0
29142     monitor-exit p0
29144     return v0
29146     :catchall_12
29147     move-exception v0
29149     monitor-exit p0
29150     :try_end_14
29151     .catchall {:try_start_c .. :try_end_14} :catchall_12
29153     throw v0
29154 .end method
29156 .method checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
29157     .registers 28
29159     if-nez p2, :cond_a
29161     new-instance v4, Ljava/lang/NullPointerException;
29163     const-string v5, "targetPkg"
29165     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
29167     throw v4
29169     :cond_a
29170     if-nez p3, :cond_e
29172     const/4 v4, 0x0
29174     :goto_d
29175     return-object v4
29177     :cond_e
29178     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->getData()Landroid/net/Uri;
29180     move-result-object v7
29182     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->getClipData()Landroid/content/ClipData;
29184     move-result-object v18
29186     if-nez v7, :cond_1c
29188     if-nez v18, :cond_1c
29190     const/4 v4, 0x0
29192     goto :goto_d
29194     :cond_1c
29195     if-eqz v7, :cond_46
29197     if-eqz p5, :cond_89
29199     move-object/from16 v0, p5
29201     iget v9, v0, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
29203     :goto_24
29204     move-object/from16 v4, p0
29206     move/from16 v5, p1
29208     move-object/from16 v6, p2
29210     move/from16 v8, p4
29212     invoke-virtual/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
29214     move-result v21
29216     if-lez v21, :cond_46
29218     if-nez p5, :cond_41
29220     new-instance p5, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
29222     move-object/from16 v0, p5
29224     move-object/from16 v1, p2
29226     move/from16 v2, v21
29228     move/from16 v3, p4
29230     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;-><init>(Ljava/lang/String;II)V
29232     :cond_41
29233     move-object/from16 v0, p5
29235     invoke-virtual {v0, v7}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->add(Ljava/lang/Object;)Z
29237     :cond_46
29238     if-eqz v18, :cond_aa
29240     const/16 v19, 0x0
29242     :goto_4a
29243     invoke-virtual/range {v18 .. v18}, Landroid/content/ClipData;->getItemCount()I
29245     move-result v4
29247     move/from16 v0, v19
29249     if-ge v0, v4, :cond_aa
29251     invoke-virtual/range {v18 .. v19}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
29253     move-result-object v4
29255     invoke-virtual {v4}, Landroid/content/ClipData$Item;->getUri()Landroid/net/Uri;
29257     move-result-object v11
29259     if-eqz v11, :cond_8d
29261     const/16 v21, -0x1
29263     if-eqz p5, :cond_8b
29265     move-object/from16 v0, p5
29267     iget v13, v0, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
29269     :goto_64
29270     move-object/from16 v8, p0
29272     move/from16 v9, p1
29274     move-object/from16 v10, p2
29276     move/from16 v12, p4
29278     invoke-virtual/range {v8 .. v13}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
29280     move-result v21
29282     if-lez v21, :cond_86
29284     if-nez p5, :cond_81
29286     new-instance p5, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
29288     move-object/from16 v0, p5
29290     move-object/from16 v1, p2
29292     move/from16 v2, v21
29294     move/from16 v3, p4
29296     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;-><init>(Ljava/lang/String;II)V
29298     :cond_81
29299     move-object/from16 v0, p5
29301     invoke-virtual {v0, v11}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->add(Ljava/lang/Object;)Z
29303     :cond_86
29304     :goto_86
29305     add-int/lit8 v19, v19, 0x1
29307     goto :goto_4a
29309     :cond_89
29310     const/4 v9, -0x1
29312     goto :goto_24
29314     :cond_8b
29315     const/4 v13, -0x1
29317     goto :goto_64
29319     :cond_8d
29320     invoke-virtual/range {v18 .. v19}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
29322     move-result-object v4
29324     invoke-virtual {v4}, Landroid/content/ClipData$Item;->getIntent()Landroid/content/Intent;
29326     move-result-object v15
29328     if-eqz v15, :cond_86
29330     move-object/from16 v12, p0
29332     move/from16 v13, p1
29334     move-object/from16 v14, p2
29336     move/from16 v16, p4
29338     move-object/from16 v17, p5
29340     invoke-virtual/range {v12 .. v17}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
29342     move-result-object v20
29344     if-eqz v20, :cond_86
29346     move-object/from16 p5, v20
29348     goto :goto_86
29350     :cond_aa
29351     move-object/from16 v4, p5
29353     goto/16 :goto_d
29354 .end method
29356 .method checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
29357     .registers 27
29359     and-int/lit8 p4, p4, 0x3
29361     if-nez p4, :cond_6
29363     const/4 v8, -0x1
29365     :cond_5
29366     :goto_5
29367     return v8
29369     :cond_6
29370     if-eqz p2, :cond_8
29372     :cond_8
29373     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
29375     move-result-object v5
29377     const-string v4, "content"
29379     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getScheme()Ljava/lang/String;
29381     move-result-object v7
29383     invoke-virtual {v4, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29385     move-result v4
29387     if-nez v4, :cond_1a
29389     const/4 v8, -0x1
29391     goto :goto_5
29393     :cond_1a
29394     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
29396     move-result-object v20
29398     const/4 v6, 0x0
29400     move-object/from16 v0, p0
29402     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
29404     invoke-static/range {p1 .. p1}, Landroid/os/UserId;->getUserId(I)I
29406     move-result v7
29408     move-object/from16 v0, v20
29410     invoke-virtual {v4, v0, v7}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
29412     move-result-object v17
29414     if-eqz v17, :cond_53
29416     move-object/from16 v0, v17
29418     iget-object v6, v0, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
29420     :goto_33
29421     if-nez v6, :cond_60
29423     const-string v4, "ActivityManager"
29425     new-instance v7, Ljava/lang/StringBuilder;
29427     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
29429     const-string v9, "No content provider found for permission check: "
29431     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29433     move-result-object v7
29435     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
29437     move-result-object v9
29439     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29441     move-result-object v7
29443     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29445     move-result-object v7
29447     invoke-static {v4, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
29449     const/4 v8, -0x1
29451     goto :goto_5
29453     :cond_53
29454     const/16 v4, 0x800
29456     :try_start_55
29457     invoke-static/range {p1 .. p1}, Landroid/os/UserId;->getUserId(I)I
29459     move-result v7
29461     move-object/from16 v0, v20
29463     invoke-interface {v5, v0, v4, v7}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
29464     :try_end_5e
29465     .catch Landroid/os/RemoteException; {:try_start_55 .. :try_end_5e} :catch_18c
29467     move-result-object v6
29469     goto :goto_33
29471     :cond_60
29472     move/from16 v8, p5
29474     if-gez v8, :cond_77
29476     if-eqz p2, :cond_77
29478     :try_start_66
29479     invoke-static/range {p1 .. p1}, Landroid/os/UserId;->getUserId(I)I
29481     move-result v4
29483     move-object/from16 v0, p2
29485     invoke-interface {v5, v0, v4}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
29486     :try_end_6f
29487     .catch Landroid/os/RemoteException; {:try_start_66 .. :try_end_6f} :catch_74
29489     move-result v8
29491     if-gez v8, :cond_77
29493     const/4 v8, -0x1
29495     goto :goto_5
29497     :catch_74
29498     move-exception v18
29500     const/4 v8, -0x1
29502     goto :goto_5
29504     :cond_77
29505     if-ltz v8, :cond_88
29507     move-object/from16 v4, p0
29509     move-object/from16 v7, p3
29511     move/from16 v9, p4
29513     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
29515     move-result v4
29517     if-eqz v4, :cond_a5
29519     const/4 v8, -0x1
29521     goto/16 :goto_5
29523     :cond_88
29524     iget-boolean v0, v6, Landroid/content/pm/ProviderInfo;->exported:Z
29526     move/from16 v16, v0
29528     and-int/lit8 v4, p4, 0x1
29530     if-eqz v4, :cond_96
29532     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
29534     if-eqz v4, :cond_96
29536     const/16 v16, 0x0
29538     :cond_96
29539     and-int/lit8 v4, p4, 0x2
29541     if-eqz v4, :cond_a0
29543     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
29545     if-eqz v4, :cond_a0
29547     const/16 v16, 0x0
29549     :cond_a0
29550     if-eqz v16, :cond_a5
29552     const/4 v8, -0x1
29554     goto/16 :goto_5
29556     :cond_a5
29557     iget-boolean v4, v6, Landroid/content/pm/ProviderInfo;->grantUriPermissions:Z
29559     if-nez v4, :cond_e2
29561     new-instance v4, Ljava/lang/SecurityException;
29563     new-instance v7, Ljava/lang/StringBuilder;
29565     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
29567     const-string v9, "Provider "
29569     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29571     move-result-object v7
29573     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
29575     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29577     move-result-object v7
29579     const-string v9, "/"
29581     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29583     move-result-object v7
29585     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
29587     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29589     move-result-object v7
29591     const-string v9, " does not allow granting of Uri permissions (uri "
29593     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29595     move-result-object v7
29597     move-object/from16 v0, p3
29599     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
29601     move-result-object v7
29603     const-string v9, ")"
29605     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29607     move-result-object v7
29609     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29611     move-result-object v7
29613     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
29615     throw v4
29617     :cond_e2
29618     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
29620     if-eqz v4, :cond_13f
29622     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
29624     array-length v15, v4
29626     const/16 v16, 0x0
29628     const/16 v19, 0x0
29630     :goto_ed
29631     move/from16 v0, v19
29633     if-ge v0, v15, :cond_107
29635     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
29637     aget-object v4, v4, v19
29639     if-eqz v4, :cond_13c
29641     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
29643     aget-object v4, v4, v19
29645     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getPath()Ljava/lang/String;
29647     move-result-object v7
29649     invoke-virtual {v4, v7}, Landroid/os/PatternMatcher;->match(Ljava/lang/String;)Z
29651     move-result v4
29653     if-eqz v4, :cond_13c
29655     const/16 v16, 0x1
29657     :cond_107
29658     if-nez v16, :cond_13f
29660     new-instance v4, Ljava/lang/SecurityException;
29662     new-instance v7, Ljava/lang/StringBuilder;
29664     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
29666     const-string v9, "Provider "
29668     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29670     move-result-object v7
29672     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
29674     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29676     move-result-object v7
29678     const-string v9, "/"
29680     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29682     move-result-object v7
29684     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
29686     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29688     move-result-object v7
29690     const-string v9, " does not allow granting of permission to path of Uri "
29692     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29694     move-result-object v7
29696     move-object/from16 v0, p3
29698     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
29700     move-result-object v7
29702     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29704     move-result-object v7
29706     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
29708     throw v4
29710     :cond_13c
29711     add-int/lit8 v19, v19, 0x1
29713     goto :goto_ed
29715     :cond_13f
29716     invoke-static {}, Landroid/os/Process;->myUid()I
29718     move-result v4
29720     move/from16 v0, p1
29722     if-eq v0, v4, :cond_5
29724     move-object/from16 v9, p0
29726     move-object v10, v5
29728     move-object v11, v6
29730     move-object/from16 v12, p3
29732     move/from16 v13, p1
29734     move/from16 v14, p4
29736     invoke-direct/range {v9 .. v14}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
29738     move-result v4
29740     if-nez v4, :cond_5
29742     move-object/from16 v0, p0
29744     move-object/from16 v1, p3
29746     move/from16 v2, p1
29748     move/from16 v3, p4
29750     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Landroid/net/Uri;II)Z
29752     move-result v4
29754     if-nez v4, :cond_5
29756     new-instance v4, Ljava/lang/SecurityException;
29758     new-instance v7, Ljava/lang/StringBuilder;
29760     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
29762     const-string v9, "Uid "
29764     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29766     move-result-object v7
29768     move/from16 v0, p1
29770     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
29772     move-result-object v7
29774     const-string v9, " does not have permission to uri "
29776     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29778     move-result-object v7
29780     move-object/from16 v0, p3
29782     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
29784     move-result-object v7
29786     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29788     move-result-object v7
29790     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
29792     throw v4
29794     :catch_18c
29795     move-exception v4
29797     goto/16 :goto_33
29798 .end method
29800 .method public checkPermission(Ljava/lang/String;II)I
29801     .registers 10
29803     const/4 v4, -0x1
29805     if-nez p1, :cond_4
29807     :goto_3
29808     return v4
29810     :cond_4
29811     invoke-static {p3}, Landroid/os/UserId;->getAppId(I)I
29813     move-result v3
29815     const/4 v5, 0x1
29817     move-object v0, p0
29819     move-object v1, p1
29821     move v2, p2
29823     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
29825     move-result v4
29827     goto :goto_3
29828 .end method
29830 .method public checkUriPermission(Landroid/net/Uri;III)I
29831     .registers 8
29833     const/4 v1, 0x0
29835     const-string v2, "checkUriPermission"
29837     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
29839     sget-object v2, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
29841     invoke-virtual {v2}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
29843     move-result-object v0
29845     check-cast v0, Lcom/android/server/am/ActivityManagerService$Identity;
29847     if-eqz v0, :cond_14
29849     iget p3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
29851     iget p2, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
29853     :cond_14
29854     invoke-static {p3}, Landroid/os/UserId;->getAppId(I)I
29856     move-result p3
29858     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
29860     if-ne p2, v2, :cond_1d
29862     :goto_1c
29863     return v1
29865     :cond_1d
29866     monitor-enter p0
29868     :try_start_1e
29869     invoke-direct {p0, p1, p3, p4}, Lcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Landroid/net/Uri;II)Z
29871     move-result v2
29873     if-eqz v2, :cond_29
29875     :goto_24
29876     monitor-exit p0
29878     goto :goto_1c
29880     :catchall_26
29881     move-exception v1
29883     monitor-exit p0
29884     :try_end_28
29885     .catchall {:try_start_1e .. :try_end_28} :catchall_26
29887     throw v1
29889     :cond_29
29890     const/4 v1, -0x1
29892     goto :goto_24
29893 .end method
29895 .method public clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)Z
29896     .registers 29
29898     const-string v4, "clearApplicationUserData"
29900     move-object/from16 v0, p0
29902     invoke-virtual {v0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
29904     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
29906     move-result v7
29908     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
29910     move-result v6
29912     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
29914     move-result-wide v21
29916     :try_start_13
29917     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
29919     move-result-object v24
29921     const/16 v23, -0x1
29923     monitor-enter p0
29924     :try_end_1a
29925     .catchall {:try_start_13 .. :try_end_1a} :catchall_d5
29927     :try_start_1a
29928     move-object/from16 v0, v24
29930     move-object/from16 v1, p1
29932     move/from16 v2, p3
29934     invoke-interface {v0, v1, v2}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
29935     :try_end_23
29936     .catchall {:try_start_1a .. :try_end_23} :catchall_d2
29937     .catch Landroid/os/RemoteException; {:try_start_1a .. :try_end_23} :catch_da
29939     move-result v23
29941     :goto_24
29942     const/4 v4, -0x1
29944     move/from16 v0, v23
29946     if-ne v0, v4, :cond_49
29948     :try_start_29
29949     const-string v4, "ActivityManager"
29951     new-instance v5, Ljava/lang/StringBuilder;
29953     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
29955     const-string v8, "Invalid packageName:"
29957     invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29959     move-result-object v5
29961     move-object/from16 v0, p1
29963     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29965     move-result-object v5
29967     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29969     move-result-object v5
29971     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
29973     const/4 v4, 0x0
29975     monitor-exit p0
29976     :try_end_45
29977     .catchall {:try_start_29 .. :try_end_45} :catchall_d2
29979     invoke-static/range {v21 .. v22}, Landroid/os/Binder;->restoreCallingIdentity(J)V
29981     :goto_48
29982     return v4
29984     :cond_49
29985     move/from16 v0, v23
29987     if-eq v7, v0, :cond_59
29989     :try_start_4d
29990     const-string v5, "android.permission.CLEAR_APP_USER_DATA"
29992     const/4 v8, -0x1
29994     const/4 v9, 0x1
29996     move-object/from16 v4, p0
29998     invoke-virtual/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
30000     move-result v4
30002     if-nez v4, :cond_a1
30004     :cond_59
30005     move-object/from16 v0, p0
30007     move-object/from16 v1, p1
30009     move/from16 v2, v23
30011     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;I)V
30013     monitor-exit p0
30014     :try_end_63
30015     .catchall {:try_start_4d .. :try_end_63} :catchall_d2
30017     :try_start_63
30018     move-object/from16 v0, v24
30020     move-object/from16 v1, p1
30022     move-object/from16 v2, p2
30024     move/from16 v3, p3
30026     invoke-interface {v0, v1, v2, v3}, Landroid/content/pm/IPackageManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)V
30028     new-instance v11, Landroid/content/Intent;
30030     const-string v4, "android.intent.action.PACKAGE_DATA_CLEARED"
30032     const-string v5, "package"
30034     const/4 v8, 0x0
30036     move-object/from16 v0, p1
30038     invoke-static {v5, v0, v8}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
30040     move-result-object v5
30042     invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
30044     const-string v4, "android.intent.extra.UID"
30046     move/from16 v0, v23
30048     invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
30050     const-string v9, "android"
30052     const/16 v10, 0x3e8
30054     const/4 v12, 0x0
30056     const/4 v13, 0x0
30058     const/4 v14, 0x0
30060     const/4 v15, 0x0
30062     const/16 v16, 0x0
30064     const/16 v17, 0x0
30066     const/16 v18, 0x0
30068     const/16 v19, 0x0
30070     move-object/from16 v8, p0
30072     move/from16 v20, p3
30074     invoke-virtual/range {v8 .. v20}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
30075     :try_end_9c
30076     .catchall {:try_start_63 .. :try_end_9c} :catchall_d5
30077     .catch Landroid/os/RemoteException; {:try_start_63 .. :try_end_9c} :catch_dd
30079     :goto_9c
30080     invoke-static/range {v21 .. v22}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30082     const/4 v4, 0x1
30084     goto :goto_48
30086     :cond_a1
30087     :try_start_a1
30088     new-instance v4, Ljava/lang/SecurityException;
30090     new-instance v5, Ljava/lang/StringBuilder;
30092     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
30094     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30096     move-result-object v5
30098     const-string v8, " does not have permission:"
30100     invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30102     move-result-object v5
30104     const-string v8, "android.permission.CLEAR_APP_USER_DATA"
30106     invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30108     move-result-object v5
30110     const-string v8, " to clear data"
30112     invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30114     move-result-object v5
30116     const-string v8, "for process:"
30118     invoke-virtual {v5, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30120     move-result-object v5
30122     move-object/from16 v0, p1
30124     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30126     move-result-object v5
30128     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30130     move-result-object v5
30132     invoke-direct {v4, v5}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
30134     throw v4
30136     :catchall_d2
30137     move-exception v4
30139     monitor-exit p0
30140     :try_end_d4
30141     .catchall {:try_start_a1 .. :try_end_d4} :catchall_d2
30143     :try_start_d4
30144     throw v4
30145     :try_end_d5
30146     .catchall {:try_start_d4 .. :try_end_d5} :catchall_d5
30148     :catchall_d5
30149     move-exception v4
30151     invoke-static/range {v21 .. v22}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30153     throw v4
30155     :catch_da
30156     move-exception v4
30158     goto/16 :goto_24
30160     :catch_dd
30161     move-exception v4
30163     goto :goto_9c
30164 .end method
30166 .method public closeSystemDialogs(Ljava/lang/String;)V
30167     .registers 6
30169     const-string v3, "closeSystemDialogs"
30171     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
30173     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
30175     move-result v2
30177     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
30179     move-result-wide v0
30181     monitor-enter p0
30183     :try_start_e
30184     invoke-virtual {p0, v2, p1}, Lcom/android/server/am/ActivityManagerService;->closeSystemDialogsLocked(ILjava/lang/String;)V
30186     monitor-exit p0
30187     :try_end_12
30188     .catchall {:try_start_e .. :try_end_12} :catchall_16
30190     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30192     return-void
30194     :catchall_16
30195     move-exception v3
30197     :try_start_17
30198     monitor-exit p0
30199     :try_end_18
30200     .catchall {:try_start_17 .. :try_end_18} :catchall_16
30202     throw v3
30203 .end method
30205 .method closeSystemDialogsLocked(ILjava/lang/String;)V
30206     .registers 22
30208     new-instance v7, Landroid/content/Intent;
30210     const-string v1, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
30212     invoke-direct {v7, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
30214     const/high16 v1, 0x4000
30216     invoke-virtual {v7, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
30218     if-eqz p2, :cond_15
30220     const-string v1, "reason"
30222     move-object/from16 v0, p2
30224     invoke-virtual {v7, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
30226     :cond_15
30227     move-object/from16 v0, p0
30229     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
30231     move-object/from16 v0, p2
30233     invoke-virtual {v1, v0}, Lcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
30235     move-object/from16 v0, p0
30237     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30239     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30241     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
30243     move-result v1
30245     add-int/lit8 v3, v1, -0x1
30247     :goto_2a
30248     if-ltz v3, :cond_4c
30250     move-object/from16 v0, p0
30252     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30254     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30256     invoke-virtual {v1, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30258     move-result-object v2
30260     check-cast v2, Lcom/android/server/am/ActivityRecord;
30262     iget-object v1, v2, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
30264     iget v1, v1, Landroid/content/pm/ActivityInfo;->flags:I
30266     and-int/lit16 v1, v1, 0x100
30268     if-eqz v1, :cond_49
30270     iget-object v1, v2, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
30272     const/4 v4, 0x0
30274     const/4 v5, 0x0
30276     const-string v6, "close-sys"
30278     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
30280     :cond_49
30281     add-int/lit8 v3, v3, -0x1
30283     goto :goto_2a
30285     :cond_4c
30286     const/4 v5, 0x0
30288     const/4 v6, 0x0
30290     const/4 v8, 0x0
30292     const/4 v9, 0x0
30294     const/4 v10, 0x0
30296     const/4 v11, 0x0
30298     const/4 v12, 0x0
30300     const/4 v13, 0x0
30302     const/4 v14, 0x0
30304     const/4 v15, 0x0
30306     const/16 v16, -0x1
30308     const/16 v18, 0x0
30310     move-object/from16 v4, p0
30312     move/from16 v17, p1
30314     invoke-direct/range {v4 .. v18}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
30316     return-void
30317 .end method
30319 .method collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
30320     .registers 10
30321     .annotation system Ldalvik/annotation/Signature;
30322         value = {
30323             "(",
30324             "Ljava/io/PrintWriter;",
30325             "I[",
30326             "Ljava/lang/String;",
30327             ")",
30328             "Ljava/util/ArrayList",
30329             "<",
30330             "Lcom/android/server/am/ProcessRecord;",
30331             ">;"
30332         }
30333     .end annotation
30335     monitor-enter p0
30337     if-eqz p3, :cond_6b
30339     :try_start_3
30340     array-length v4, p3
30342     if-le v4, p2, :cond_6b
30344     aget-object v4, p3, p2
30346     const/4 v5, 0x0
30348     invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
30350     move-result v4
30352     const/16 v5, 0x2d
30354     if-eq v4, v5, :cond_6b
30356     new-instance v3, Ljava/util/ArrayList;
30358     invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
30359     :try_end_16
30360     .catchall {:try_start_3 .. :try_end_16} :catchall_47
30362     const/4 v1, -0x1
30364     :try_start_17
30365     aget-object v4, p3, p2
30367     invoke-static {v4}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
30368     :try_end_1c
30369     .catchall {:try_start_17 .. :try_end_1c} :catchall_47
30370     .catch Ljava/lang/NumberFormatException; {:try_start_17 .. :try_end_1c} :catch_75
30372     move-result v1
30374     :goto_1d
30375     :try_start_1d
30376     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
30378     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
30380     move-result v4
30382     add-int/lit8 v0, v4, -0x1
30384     :goto_25
30385     if-ltz v0, :cond_4a
30387     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
30389     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30391     move-result-object v2
30393     check-cast v2, Lcom/android/server/am/ProcessRecord;
30395     iget v4, v2, Lcom/android/server/am/ProcessRecord;->pid:I
30397     if-ne v4, v1, :cond_39
30399     invoke-virtual {v3, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
30401     :cond_36
30402     :goto_36
30403     add-int/lit8 v0, v0, -0x1
30405     goto :goto_25
30407     :cond_39
30408     iget-object v4, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
30410     aget-object v5, p3, p2
30412     invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30414     move-result v4
30416     if-eqz v4, :cond_36
30418     invoke-virtual {v3, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
30420     goto :goto_36
30422     :catchall_47
30423     move-exception v4
30425     monitor-exit p0
30426     :try_end_49
30427     .catchall {:try_start_1d .. :try_end_49} :catchall_47
30429     throw v4
30431     :cond_4a
30432     :try_start_4a
30433     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
30435     move-result v4
30437     if-gtz v4, :cond_72
30439     new-instance v4, Ljava/lang/StringBuilder;
30441     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
30443     const-string v5, "No process found for: "
30445     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30447     move-result-object v4
30449     aget-object v5, p3, p2
30451     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30453     move-result-object v4
30455     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30457     move-result-object v4
30459     invoke-virtual {p1, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30461     const/4 v4, 0x0
30463     monitor-exit p0
30465     :goto_6a
30466     return-object v4
30468     :cond_6b
30469     new-instance v3, Ljava/util/ArrayList;
30471     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
30473     invoke-direct {v3, v4}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
30475     :cond_72
30476     monitor-exit p0
30477     :try_end_73
30478     .catchall {:try_start_4a .. :try_end_73} :catchall_47
30480     move-object v4, v3
30482     goto :goto_6a
30484     :catch_75
30485     move-exception v4
30487     goto :goto_1d
30488 .end method
30490 .method compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
30491     .registers 3
30493     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
30495     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
30497     move-result-object v0
30499     return-object v0
30500 .end method
30502 .method public crashApplication(IILjava/lang/String;Ljava/lang/String;)V
30503     .registers 16
30505     const-string v8, "android.permission.FORCE_STOP_PACKAGES"
30507     invoke-virtual {p0, v8}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
30509     move-result v8
30511     if-eqz v8, :cond_44
30513     new-instance v8, Ljava/lang/StringBuilder;
30515     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
30517     const-string v9, "Permission Denial: crashApplication() from pid="
30519     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30521     move-result-object v8
30523     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
30525     move-result v9
30527     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30529     move-result-object v8
30531     const-string v9, ", uid="
30533     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30535     move-result-object v8
30537     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
30539     move-result v9
30541     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30543     move-result-object v8
30545     const-string v9, " requires "
30547     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30549     move-result-object v8
30551     const-string v9, "android.permission.FORCE_STOP_PACKAGES"
30553     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30555     move-result-object v8
30557     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30559     move-result-object v4
30561     const-string v8, "ActivityManager"
30563     invoke-static {v8, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
30565     new-instance v8, Ljava/lang/SecurityException;
30567     invoke-direct {v8, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
30569     throw v8
30571     :cond_44
30572     monitor-enter p0
30574     const/4 v6, 0x0
30576     :try_start_46
30577     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
30579     monitor-enter v9
30580     :try_end_49
30581     .catchall {:try_start_46 .. :try_end_49} :catchall_b4
30583     const/4 v0, 0x0
30585     :goto_4a
30586     :try_start_4a
30587     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
30589     invoke-virtual {v8}, Landroid/util/SparseArray;->size()I
30591     move-result v8
30593     if-ge v0, v8, :cond_66
30595     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
30597     invoke-virtual {v8, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
30599     move-result-object v5
30601     check-cast v5, Lcom/android/server/am/ProcessRecord;
30603     iget v8, v5, Lcom/android/server/am/ProcessRecord;->uid:I
30605     if-eq v8, p1, :cond_61
30607     :cond_5e
30608     add-int/lit8 v0, v0, 0x1
30610     goto :goto_4a
30612     :cond_61
30613     iget v8, v5, Lcom/android/server/am/ProcessRecord;->pid:I
30615     if-ne v8, p2, :cond_97
30617     move-object v6, v5
30619     :cond_66
30620     monitor-exit v9
30621     :try_end_67
30622     .catchall {:try_start_4a .. :try_end_67} :catchall_b1
30624     if-nez v6, :cond_b7
30626     :try_start_69
30627     const-string v8, "ActivityManager"
30629     new-instance v9, Ljava/lang/StringBuilder;
30631     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
30633     const-string v10, "crashApplication: nothing for uid="
30635     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30637     move-result-object v9
30639     invoke-virtual {v9, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30641     move-result-object v9
30643     const-string v10, " initialPid="
30645     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30647     move-result-object v9
30649     invoke-virtual {v9, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30651     move-result-object v9
30653     const-string v10, " packageName="
30655     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30657     move-result-object v9
30659     invoke-virtual {v9, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30661     move-result-object v9
30663     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30665     move-result-object v9
30667     invoke-static {v8, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
30669     monitor-exit p0
30670     :try_end_96
30671     .catchall {:try_start_69 .. :try_end_96} :catchall_b4
30673     :goto_96
30674     return-void
30676     :cond_97
30677     :try_start_97
30678     iget-object v8, v5, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
30680     invoke-virtual {v8}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
30682     move-result-object v1
30684     :cond_9d
30685     :goto_9d
30686     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
30688     move-result v8
30690     if-eqz v8, :cond_5e
30692     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
30694     move-result-object v7
30696     check-cast v7, Ljava/lang/String;
30698     invoke-virtual {v7, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30700     move-result v8
30702     if-eqz v8, :cond_9d
30704     move-object v6, v5
30706     goto :goto_9d
30708     :catchall_b1
30709     move-exception v8
30711     monitor-exit v9
30712     :try_end_b3
30713     .catchall {:try_start_97 .. :try_end_b3} :catchall_b1
30715     :try_start_b3
30716     throw v8
30718     :catchall_b4
30719     move-exception v8
30721     monitor-exit p0
30722     :try_end_b6
30723     .catchall {:try_start_b3 .. :try_end_b6} :catchall_b4
30725     throw v8
30727     :cond_b7
30728     :try_start_b7
30729     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
30731     if-eqz v8, :cond_d8
30733     iget v8, v6, Lcom/android/server/am/ProcessRecord;->pid:I
30735     invoke-static {}, Landroid/os/Process;->myPid()I
30737     move-result v9
30739     if-ne v8, v9, :cond_cc
30741     const-string v8, "ActivityManager"
30743     const-string v9, "crashApplication: trying to crash self!"
30745     invoke-static {v8, v9}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
30747     monitor-exit p0
30749     goto :goto_96
30751     :cond_cc
30752     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
30753     :try_end_cf
30754     .catchall {:try_start_b7 .. :try_end_cf} :catchall_b4
30756     move-result-wide v2
30758     :try_start_d0
30759     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
30761     invoke-interface {v8, p4}, Landroid/app/IApplicationThread;->scheduleCrash(Ljava/lang/String;)V
30762     :try_end_d5
30763     .catchall {:try_start_d0 .. :try_end_d5} :catchall_b4
30764     .catch Landroid/os/RemoteException; {:try_start_d0 .. :try_end_d5} :catch_da
30766     :goto_d5
30767     :try_start_d5
30768     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30770     :cond_d8
30771     monitor-exit p0
30772     :try_end_d9
30773     .catchall {:try_start_d5 .. :try_end_d9} :catchall_b4
30775     goto :goto_96
30777     :catch_da
30778     move-exception v8
30780     goto :goto_d5
30781 .end method
30783 .method createAppErrorIntentLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/content/Intent;
30784     .registers 8
30786     invoke-direct {p0, p1, p2, p3, p4}, Lcom/android/server/am/ActivityManagerService;->createAppErrorReportLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/app/ApplicationErrorReport;
30788     move-result-object v0
30790     if-nez v0, :cond_8
30792     const/4 v1, 0x0
30794     :goto_7
30795     return-object v1
30797     :cond_8
30798     new-instance v1, Landroid/content/Intent;
30800     const-string v2, "android.intent.action.APP_ERROR"
30802     invoke-direct {v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
30804     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
30806     invoke-virtual {v1, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
30808     const-string v2, "android.intent.extra.BUG_REPORT"
30810     invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
30812     const/high16 v2, 0x1000
30814     invoke-virtual {v1, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
30816     goto :goto_7
30817 .end method
30819 .method decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
30820     .registers 7
30822     const/4 v0, 0x0
30824     if-eqz p1, :cond_2a
30826     iget-object p2, p1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
30828     if-eqz p4, :cond_23
30830     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
30832     add-int/lit8 v1, v1, -0x1
30834     iput v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
30836     :goto_d
30837     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
30839     if-nez v1, :cond_22
30841     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
30843     if-nez v1, :cond_22
30845     iget-object v0, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
30847     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
30849     iget-object v0, p1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
30851     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
30853     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
30855     const/4 v0, 0x1
30857     :cond_22
30858     :goto_22
30859     return v0
30861     :cond_23
30862     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
30864     add-int/lit8 v1, v1, -0x1
30866     iput v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
30868     goto :goto_d
30870     :cond_2a
30871     invoke-virtual {p2, p3}, Lcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
30873     goto :goto_22
30874 .end method
30876 .method public dismissKeyguardOnNextActivity()V
30877     .registers 4
30879     const-string v2, "dismissKeyguardOnNextActivity"
30881     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
30883     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
30885     move-result-wide v0
30887     :try_start_9
30888     monitor-enter p0
30889     :try_end_a
30890     .catchall {:try_start_9 .. :try_end_a} :catchall_21
30892     :try_start_a
30893     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
30895     if-eqz v2, :cond_14
30897     const/4 v2, 0x0
30899     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
30901     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
30903     :cond_14
30904     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30906     invoke-virtual {v2}, Lcom/android/server/am/ActivityStack;->dismissKeyguardOnNextActivityLocked()V
30908     monitor-exit p0
30909     :try_end_1a
30910     .catchall {:try_start_a .. :try_end_1a} :catchall_1e
30912     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30914     return-void
30916     :catchall_1e
30917     move-exception v2
30919     :try_start_1f
30920     monitor-exit p0
30921     :try_end_20
30922     .catchall {:try_start_1f .. :try_end_20} :catchall_1e
30924     :try_start_20
30925     throw v2
30926     :try_end_21
30927     .catchall {:try_start_20 .. :try_end_21} :catchall_21
30929     :catchall_21
30930     move-exception v2
30932     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
30934     throw v2
30935 .end method
30937 .method final doPendingActivityLaunchesLocked(Z)V
30938     .registers 11
30940     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
30942     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
30944     move-result v6
30946     if-gtz v6, :cond_9
30948     :goto_8
30949     return-void
30951     :cond_9
30952     const/4 v7, 0x0
30954     :goto_a
30955     if-ge v7, v6, :cond_2c
30957     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
30959     invoke-virtual {v0, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30961     move-result-object v8
30963     check-cast v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;
30965     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30967     iget-object v1, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->r:Lcom/android/server/am/ActivityRecord;
30969     iget-object v2, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->sourceRecord:Lcom/android/server/am/ActivityRecord;
30971     iget v3, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->startFlags:I
30973     if-eqz p1, :cond_2a
30975     add-int/lit8 v4, v6, -0x1
30977     if-ne v7, v4, :cond_2a
30979     const/4 v4, 0x1
30981     :goto_23
30982     const/4 v5, 0x0
30984     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityStack;->startActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;IZLandroid/os/Bundle;)I
30986     add-int/lit8 v7, v7, 0x1
30988     goto :goto_a
30990     :cond_2a
30991     const/4 v4, 0x0
30993     goto :goto_23
30995     :cond_2c
30996     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
30998     invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V
31000     goto :goto_8
31001 .end method
31003 .method protected dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
31004     .registers 38
31006     const-string v1, "android.permission.DUMP"
31008     move-object/from16 v0, p0
31010     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
31012     move-result v1
31014     if-eqz v1, :cond_41
31016     new-instance v1, Ljava/lang/StringBuilder;
31018     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
31020     const-string v2, "Permission Denial: can\'t dump ActivityManager from from pid="
31022     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31024     move-result-object v1
31026     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
31028     move-result v2
31030     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
31032     move-result-object v1
31034     const-string v2, ", uid="
31036     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31038     move-result-object v1
31040     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
31042     move-result v2
31044     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
31046     move-result-object v1
31048     const-string v2, " without permission "
31050     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31052     move-result-object v1
31054     const-string v2, "android.permission.DUMP"
31056     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31058     move-result-object v1
31060     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31062     move-result-object v1
31064     move-object/from16 v0, p2
31066     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31068     :goto_40
31069     return-void
31071     :cond_41
31072     const/16 v17, 0x0
31074     const/4 v7, 0x0
31076     const/16 v28, 0x0
31078     const/4 v5, 0x0
31080     :goto_47
31081     move-object/from16 v0, p3
31083     array-length v1, v0
31085     if-ge v5, v1, :cond_61
31087     aget-object v31, p3, v5
31089     if-eqz v31, :cond_61
31091     invoke-virtual/range {v31 .. v31}, Ljava/lang/String;->length()I
31093     move-result v1
31095     if-lez v1, :cond_61
31097     const/4 v1, 0x0
31099     move-object/from16 v0, v31
31101     invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
31103     move-result v1
31105     const/16 v2, 0x2d
31107     if-eq v1, v2, :cond_99
31109     :cond_61
31110     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
31112     move-result-wide v32
31114     const/16 v29, 0x0
31116     move-object/from16 v0, p3
31118     array-length v1, v0
31120     if-ge v5, v1, :cond_401
31122     aget-object v21, p3, v5
31124     add-int/lit8 v5, v5, 0x1
31126     const-string v1, "activities"
31128     move-object/from16 v0, v21
31130     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31132     move-result v1
31134     if-nez v1, :cond_84
31136     const-string v1, "a"
31138     move-object/from16 v0, v21
31140     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31142     move-result v1
31144     if-eqz v1, :cond_178
31146     :cond_84
31147     monitor-enter p0
31149     const/4 v6, 0x1
31151     const/4 v8, 0x0
31153     move-object/from16 v1, p0
31155     move-object/from16 v2, p1
31157     move-object/from16 v3, p2
31159     move-object/from16 v4, p3
31161     :try_start_8f
31162     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
31164     monitor-exit p0
31165     :try_end_93
31166     .catchall {:try_start_8f .. :try_end_93} :catchall_175
31168     :cond_93
31169     :goto_93
31170     if-nez v29, :cond_401
31172     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
31174     goto :goto_40
31176     :cond_99
31177     add-int/lit8 v5, v5, 0x1
31179     const-string v1, "-a"
31181     move-object/from16 v0, v31
31183     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31185     move-result v1
31187     if-eqz v1, :cond_a8
31189     const/16 v17, 0x1
31191     goto :goto_47
31193     :cond_a8
31194     const-string v1, "-c"
31196     move-object/from16 v0, v31
31198     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31200     move-result v1
31202     if-eqz v1, :cond_b4
31204     const/4 v7, 0x1
31206     goto :goto_47
31208     :cond_b4
31209     const-string v1, "-h"
31211     move-object/from16 v0, v31
31213     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31215     move-result v1
31217     if-eqz v1, :cond_153
31219     const-string v1, "Activity manager dump options:"
31221     move-object/from16 v0, p2
31223     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31225     const-string v1, "  [-a] [-c] [-h] [cmd] ..."
31227     move-object/from16 v0, p2
31229     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31231     const-string v1, "  cmd may be one of:"
31233     move-object/from16 v0, p2
31235     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31237     const-string v1, "    a[ctivities]: activity stack state"
31239     move-object/from16 v0, p2
31241     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31243     const-string v1, "    b[roadcasts] [PACKAGE_NAME]: broadcast state"
31245     move-object/from16 v0, p2
31247     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31249     const-string v1, "    i[ntents] [PACKAGE_NAME]: pending intent state"
31251     move-object/from16 v0, p2
31253     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31255     const-string v1, "    p[rocesses] [PACKAGE_NAME]: process state"
31257     move-object/from16 v0, p2
31259     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31261     const-string v1, "    o[om]: out of memory management"
31263     move-object/from16 v0, p2
31265     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31267     const-string v1, "    prov[iders] [COMP_SPEC ...]: content provider state"
31269     move-object/from16 v0, p2
31271     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31273     const-string v1, "    provider [COMP_SPEC]: provider client-side state"
31275     move-object/from16 v0, p2
31277     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31279     const-string v1, "    s[ervices] [COMP_SPEC ...]: service state"
31281     move-object/from16 v0, p2
31283     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31285     const-string v1, "    service [COMP_SPEC]: service client-side state"
31287     move-object/from16 v0, p2
31289     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31291     const-string v1, "    package [PACKAGE_NAME]: all state related to given package"
31293     move-object/from16 v0, p2
31295     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31297     const-string v1, "    all: dump all activities"
31299     move-object/from16 v0, p2
31301     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31303     const-string v1, "    top: dump the top activity"
31305     move-object/from16 v0, p2
31307     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31309     const-string v1, "  cmd may also be a COMP_SPEC to dump activities."
31311     move-object/from16 v0, p2
31313     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31315     const-string v1, "  COMP_SPEC may be a component name (com.foo/.myApp),"
31317     move-object/from16 v0, p2
31319     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31321     const-string v1, "    a partial substring in a component name, a"
31323     move-object/from16 v0, p2
31325     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31327     const-string v1, "    hex object identifier."
31329     move-object/from16 v0, p2
31331     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31333     const-string v1, "  -a: include all available server state."
31335     move-object/from16 v0, p2
31337     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31339     const-string v1, "  -c: include client state."
31341     move-object/from16 v0, p2
31343     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31345     goto/16 :goto_40
31347     :cond_153
31348     new-instance v1, Ljava/lang/StringBuilder;
31350     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
31352     const-string v2, "Unknown argument: "
31354     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31356     move-result-object v1
31358     move-object/from16 v0, v31
31360     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31362     move-result-object v1
31364     const-string v2, "; use -h for help"
31366     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31368     move-result-object v1
31370     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31372     move-result-object v1
31374     move-object/from16 v0, p2
31376     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31378     goto/16 :goto_47
31380     :catchall_175
31381     move-exception v1
31383     :try_start_176
31384     monitor-exit p0
31385     :try_end_177
31386     .catchall {:try_start_176 .. :try_end_177} :catchall_175
31388     throw v1
31390     :cond_178
31391     const-string v1, "broadcasts"
31393     move-object/from16 v0, v21
31395     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31397     move-result v1
31399     if-nez v1, :cond_18c
31401     const-string v1, "b"
31403     move-object/from16 v0, v21
31405     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31407     move-result v1
31409     if-eqz v1, :cond_1c3
31411     :cond_18c
31412     move-object/from16 v0, p3
31414     array-length v1, v0
31416     if-lt v5, v1, :cond_1a8
31418     const/4 v14, 0x0
31420     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
31422     :cond_194
31423     :goto_194
31424     monitor-enter p0
31426     const/4 v13, 0x1
31428     move-object/from16 v8, p0
31430     move-object/from16 v9, p1
31432     move-object/from16 v10, p2
31434     move-object/from16 v11, p3
31436     move v12, v5
31438     :try_start_19f
31439     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
31441     monitor-exit p0
31443     goto/16 :goto_93
31445     :catchall_1a5
31446     move-exception v1
31448     monitor-exit p0
31449     :try_end_1a7
31450     .catchall {:try_start_19f .. :try_end_1a7} :catchall_1a5
31452     throw v1
31454     :cond_1a8
31455     aget-object v14, p3, v5
31457     add-int/lit8 v5, v5, 0x1
31459     move-object/from16 v0, p3
31461     array-length v1, v0
31463     sub-int/2addr v1, v5
31465     new-array v15, v1, [Ljava/lang/String;
31467     move-object/from16 v0, p3
31469     array-length v1, v0
31471     const/4 v2, 0x2
31473     if-le v1, v2, :cond_194
31475     const/4 v1, 0x0
31477     move-object/from16 v0, p3
31479     array-length v2, v0
31481     sub-int/2addr v2, v5
31483     move-object/from16 v0, p3
31485     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
31487     goto :goto_194
31489     :cond_1c3
31490     const-string v1, "intents"
31492     move-object/from16 v0, v21
31494     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31496     move-result v1
31498     if-nez v1, :cond_1d7
31500     const-string v1, "i"
31502     move-object/from16 v0, v21
31504     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31506     move-result v1
31508     if-eqz v1, :cond_20e
31510     :cond_1d7
31511     move-object/from16 v0, p3
31513     array-length v1, v0
31515     if-lt v5, v1, :cond_1f3
31517     const/4 v14, 0x0
31519     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
31521     :cond_1df
31522     :goto_1df
31523     monitor-enter p0
31525     const/4 v13, 0x1
31527     move-object/from16 v8, p0
31529     move-object/from16 v9, p1
31531     move-object/from16 v10, p2
31533     move-object/from16 v11, p3
31535     move v12, v5
31537     :try_start_1ea
31538     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
31540     monitor-exit p0
31542     goto/16 :goto_93
31544     :catchall_1f0
31545     move-exception v1
31547     monitor-exit p0
31548     :try_end_1f2
31549     .catchall {:try_start_1ea .. :try_end_1f2} :catchall_1f0
31551     throw v1
31553     :cond_1f3
31554     aget-object v14, p3, v5
31556     add-int/lit8 v5, v5, 0x1
31558     move-object/from16 v0, p3
31560     array-length v1, v0
31562     sub-int/2addr v1, v5
31564     new-array v15, v1, [Ljava/lang/String;
31566     move-object/from16 v0, p3
31568     array-length v1, v0
31570     const/4 v2, 0x2
31572     if-le v1, v2, :cond_1df
31574     const/4 v1, 0x0
31576     move-object/from16 v0, p3
31578     array-length v2, v0
31580     sub-int/2addr v2, v5
31582     move-object/from16 v0, p3
31584     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
31586     goto :goto_1df
31588     :cond_20e
31589     const-string v1, "processes"
31591     move-object/from16 v0, v21
31593     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31595     move-result v1
31597     if-nez v1, :cond_222
31599     const-string v1, "p"
31601     move-object/from16 v0, v21
31603     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31605     move-result v1
31607     if-eqz v1, :cond_259
31609     :cond_222
31610     move-object/from16 v0, p3
31612     array-length v1, v0
31614     if-lt v5, v1, :cond_23e
31616     const/4 v14, 0x0
31618     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
31620     :cond_22a
31621     :goto_22a
31622     monitor-enter p0
31624     const/4 v13, 0x1
31626     move-object/from16 v8, p0
31628     move-object/from16 v9, p1
31630     move-object/from16 v10, p2
31632     move-object/from16 v11, p3
31634     move v12, v5
31636     :try_start_235
31637     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
31639     monitor-exit p0
31641     goto/16 :goto_93
31643     :catchall_23b
31644     move-exception v1
31646     monitor-exit p0
31647     :try_end_23d
31648     .catchall {:try_start_235 .. :try_end_23d} :catchall_23b
31650     throw v1
31652     :cond_23e
31653     aget-object v14, p3, v5
31655     add-int/lit8 v5, v5, 0x1
31657     move-object/from16 v0, p3
31659     array-length v1, v0
31661     sub-int/2addr v1, v5
31663     new-array v15, v1, [Ljava/lang/String;
31665     move-object/from16 v0, p3
31667     array-length v1, v0
31669     const/4 v2, 0x2
31671     if-le v1, v2, :cond_22a
31673     const/4 v1, 0x0
31675     move-object/from16 v0, p3
31677     array-length v2, v0
31679     sub-int/2addr v2, v5
31681     move-object/from16 v0, p3
31683     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
31685     goto :goto_22a
31687     :cond_259
31688     const-string v1, "oom"
31690     move-object/from16 v0, v21
31692     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31694     move-result v1
31696     if-nez v1, :cond_26d
31698     const-string v1, "o"
31700     move-object/from16 v0, v21
31702     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31704     move-result v1
31706     if-eqz v1, :cond_280
31708     :cond_26d
31709     monitor-enter p0
31711     const/4 v6, 0x1
31713     move-object/from16 v1, p0
31715     move-object/from16 v2, p1
31717     move-object/from16 v3, p2
31719     move-object/from16 v4, p3
31721     :try_start_277
31722     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->dumpOomLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZ)Z
31724     monitor-exit p0
31726     goto/16 :goto_93
31728     :catchall_27d
31729     move-exception v1
31731     monitor-exit p0
31732     :try_end_27f
31733     .catchall {:try_start_277 .. :try_end_27f} :catchall_27d
31735     throw v1
31737     :cond_280
31738     const-string v1, "provider"
31740     move-object/from16 v0, v21
31742     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31744     move-result v1
31746     if-eqz v1, :cond_2dc
31748     move-object/from16 v0, p3
31750     array-length v1, v0
31752     if-lt v5, v1, :cond_2c1
31754     const/4 v14, 0x0
31756     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
31758     :cond_292
31759     :goto_292
31760     const/16 v16, 0x0
31762     move-object/from16 v11, p0
31764     move-object/from16 v12, p1
31766     move-object/from16 v13, p2
31768     invoke-virtual/range {v11 .. v17}, Lcom/android/server/am/ActivityManagerService;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
31770     move-result v1
31772     if-nez v1, :cond_93
31774     new-instance v1, Ljava/lang/StringBuilder;
31776     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
31778     const-string v2, "No providers match: "
31780     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31782     move-result-object v1
31784     invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31786     move-result-object v1
31788     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31790     move-result-object v1
31792     move-object/from16 v0, p2
31794     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31796     const-string v1, "Use -h for help."
31798     move-object/from16 v0, p2
31800     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31802     goto/16 :goto_93
31804     :cond_2c1
31805     aget-object v14, p3, v5
31807     add-int/lit8 v5, v5, 0x1
31809     move-object/from16 v0, p3
31811     array-length v1, v0
31813     sub-int/2addr v1, v5
31815     new-array v15, v1, [Ljava/lang/String;
31817     move-object/from16 v0, p3
31819     array-length v1, v0
31821     const/4 v2, 0x2
31823     if-le v1, v2, :cond_292
31825     const/4 v1, 0x0
31827     move-object/from16 v0, p3
31829     array-length v2, v0
31831     sub-int/2addr v2, v5
31833     move-object/from16 v0, p3
31835     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
31837     goto :goto_292
31839     :cond_2dc
31840     const-string v1, "providers"
31842     move-object/from16 v0, v21
31844     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31846     move-result v1
31848     if-nez v1, :cond_2f0
31850     const-string v1, "prov"
31852     move-object/from16 v0, v21
31854     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31856     move-result v1
31858     if-eqz v1, :cond_308
31860     :cond_2f0
31861     monitor-enter p0
31863     const/16 v23, 0x1
31865     const/16 v24, 0x0
31867     move-object/from16 v18, p0
31869     move-object/from16 v19, p1
31871     move-object/from16 v20, p2
31873     move-object/from16 v21, p3
31875     move/from16 v22, v5
31877     :try_start_2ff
31878     invoke-virtual/range {v18 .. v24}, Lcom/android/server/am/ActivityManagerService;->dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
31880     monitor-exit p0
31882     goto/16 :goto_93
31884     :catchall_305
31885     move-exception v1
31887     monitor-exit p0
31888     :try_end_307
31889     .catchall {:try_start_2ff .. :try_end_307} :catchall_305
31891     throw v1
31893     :cond_308
31894     const-string v1, "service"
31896     move-object/from16 v0, v21
31898     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
31900     move-result v1
31902     if-eqz v1, :cond_364
31904     move-object/from16 v0, p3
31906     array-length v1, v0
31908     if-lt v5, v1, :cond_349
31910     const/4 v14, 0x0
31912     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
31914     :cond_31a
31915     :goto_31a
31916     const/16 v16, 0x0
31918     move-object/from16 v11, p0
31920     move-object/from16 v12, p1
31922     move-object/from16 v13, p2
31924     invoke-virtual/range {v11 .. v17}, Lcom/android/server/am/ActivityManagerService;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
31926     move-result v1
31928     if-nez v1, :cond_93
31930     new-instance v1, Ljava/lang/StringBuilder;
31932     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
31934     const-string v2, "No services match: "
31936     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31938     move-result-object v1
31940     invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31942     move-result-object v1
31944     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31946     move-result-object v1
31948     move-object/from16 v0, p2
31950     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31952     const-string v1, "Use -h for help."
31954     move-object/from16 v0, p2
31956     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31958     goto/16 :goto_93
31960     :cond_349
31961     aget-object v14, p3, v5
31963     add-int/lit8 v5, v5, 0x1
31965     move-object/from16 v0, p3
31967     array-length v1, v0
31969     sub-int/2addr v1, v5
31971     new-array v15, v1, [Ljava/lang/String;
31973     move-object/from16 v0, p3
31975     array-length v1, v0
31977     const/4 v2, 0x2
31979     if-le v1, v2, :cond_31a
31981     const/4 v1, 0x0
31983     move-object/from16 v0, p3
31985     array-length v2, v0
31987     sub-int/2addr v2, v5
31989     move-object/from16 v0, p3
31991     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
31993     goto :goto_31a
31995     :cond_364
31996     const-string v1, "package"
31998     move-object/from16 v0, v21
32000     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32002     move-result v1
32004     if-eqz v1, :cond_3a4
32006     move-object/from16 v0, p3
32008     array-length v1, v0
32010     if-lt v5, v1, :cond_383
32012     const-string v1, "package: no package name specified"
32014     move-object/from16 v0, p2
32016     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32018     const-string v1, "Use -h for help."
32020     move-object/from16 v0, p2
32022     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32024     goto/16 :goto_93
32026     :cond_383
32027     aget-object v28, p3, v5
32029     add-int/lit8 v5, v5, 0x1
32031     move-object/from16 v0, p3
32033     array-length v1, v0
32035     sub-int/2addr v1, v5
32037     new-array v15, v1, [Ljava/lang/String;
32039     move-object/from16 v0, p3
32041     array-length v1, v0
32043     const/4 v2, 0x2
32045     if-le v1, v2, :cond_39d
32047     const/4 v1, 0x0
32049     move-object/from16 v0, p3
32051     array-length v2, v0
32053     sub-int/2addr v2, v5
32055     move-object/from16 v0, p3
32057     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
32059     :cond_39d
32060     move-object/from16 p3, v15
32062     const/4 v5, 0x0
32064     const/16 v29, 0x1
32066     goto/16 :goto_93
32068     :cond_3a4
32069     const-string v1, "services"
32071     move-object/from16 v0, v21
32073     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32075     move-result v1
32077     if-nez v1, :cond_3b8
32079     const-string v1, "s"
32081     move-object/from16 v0, v21
32083     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32085     move-result v1
32087     if-eqz v1, :cond_3cc
32089     :cond_3b8
32090     monitor-enter p0
32092     const/4 v6, 0x1
32094     const/4 v8, 0x0
32096     move-object/from16 v1, p0
32098     move-object/from16 v2, p1
32100     move-object/from16 v3, p2
32102     move-object/from16 v4, p3
32104     :try_start_3c3
32105     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpServicesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
32107     monitor-exit p0
32109     goto/16 :goto_93
32111     :catchall_3c9
32112     move-exception v1
32114     monitor-exit p0
32115     :try_end_3cb
32116     .catchall {:try_start_3c3 .. :try_end_3cb} :catchall_3c9
32118     throw v1
32120     :cond_3cc
32121     move-object/from16 v18, p0
32123     move-object/from16 v19, p1
32125     move-object/from16 v20, p2
32127     move-object/from16 v22, p3
32129     move/from16 v23, v5
32131     move/from16 v24, v17
32133     invoke-virtual/range {v18 .. v24}, Lcom/android/server/am/ActivityManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
32135     move-result v1
32137     if-nez v1, :cond_93
32139     new-instance v1, Ljava/lang/StringBuilder;
32141     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32143     const-string v2, "Bad activity command, or no activities match: "
32145     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32147     move-result-object v1
32149     move-object/from16 v0, v21
32151     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32153     move-result-object v1
32155     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32157     move-result-object v1
32159     move-object/from16 v0, p2
32161     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32163     const-string v1, "Use -h for help."
32165     move-object/from16 v0, p2
32167     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32169     goto/16 :goto_93
32171     :cond_401
32172     monitor-enter p0
32174     move-object/from16 v22, p0
32176     move-object/from16 v23, p1
32178     move-object/from16 v24, p2
32180     move-object/from16 v25, p3
32182     move/from16 v26, v5
32184     move/from16 v27, v17
32186     :try_start_40e
32187     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
32189     move-result v30
32191     if-eqz v30, :cond_41b
32193     const-string v1, " "
32195     move-object/from16 v0, p2
32197     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32199     :cond_41b
32200     if-eqz v17, :cond_424
32202     const-string v1, "-------------------------------------------------------------------------------"
32204     move-object/from16 v0, p2
32206     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32208     :cond_424
32209     move-object/from16 v22, p0
32211     move-object/from16 v23, p1
32213     move-object/from16 v24, p2
32215     move-object/from16 v25, p3
32217     move/from16 v26, v5
32219     move/from16 v27, v17
32221     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
32223     move-result v30
32225     if-eqz v30, :cond_43d
32227     const-string v1, " "
32229     move-object/from16 v0, p2
32231     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32233     :cond_43d
32234     if-eqz v17, :cond_446
32236     const-string v1, "-------------------------------------------------------------------------------"
32238     move-object/from16 v0, p2
32240     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32242     :cond_446
32243     move-object/from16 v22, p0
32245     move-object/from16 v23, p1
32247     move-object/from16 v24, p2
32249     move-object/from16 v25, p3
32251     move/from16 v26, v5
32253     move/from16 v27, v17
32255     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
32257     move-result v30
32259     if-eqz v30, :cond_45f
32261     const-string v1, " "
32263     move-object/from16 v0, p2
32265     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32267     :cond_45f
32268     if-eqz v17, :cond_468
32270     const-string v1, "-------------------------------------------------------------------------------"
32272     move-object/from16 v0, p2
32274     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32276     :cond_468
32277     move-object/from16 v1, p0
32279     move-object/from16 v2, p1
32281     move-object/from16 v3, p2
32283     move-object/from16 v4, p3
32285     move/from16 v6, v17
32287     move-object/from16 v8, v28
32289     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpServicesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
32291     move-result v30
32293     if-eqz v30, :cond_481
32295     const-string v1, " "
32297     move-object/from16 v0, p2
32299     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32301     :cond_481
32302     if-eqz v17, :cond_48a
32304     const-string v1, "-------------------------------------------------------------------------------"
32306     move-object/from16 v0, p2
32308     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32310     :cond_48a
32311     move-object/from16 v1, p0
32313     move-object/from16 v2, p1
32315     move-object/from16 v3, p2
32317     move-object/from16 v4, p3
32319     move/from16 v6, v17
32321     move-object/from16 v8, v28
32323     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
32325     move-result v30
32327     if-eqz v30, :cond_4a3
32329     const-string v1, " "
32331     move-object/from16 v0, p2
32333     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32335     :cond_4a3
32336     if-eqz v17, :cond_4ac
32338     const-string v1, "-------------------------------------------------------------------------------"
32340     move-object/from16 v0, p2
32342     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32344     :cond_4ac
32345     move-object/from16 v22, p0
32347     move-object/from16 v23, p1
32349     move-object/from16 v24, p2
32351     move-object/from16 v25, p3
32353     move/from16 v26, v5
32355     move/from16 v27, v17
32357     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
32359     monitor-exit p0
32360     :try_end_4bc
32361     .catchall {:try_start_40e .. :try_end_4bc} :catchall_4c1
32363     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
32365     goto/16 :goto_40
32367     :catchall_4c1
32368     move-exception v1
32370     :try_start_4c2
32371     monitor-exit p0
32372     :try_end_4c3
32373     .catchall {:try_start_4c2 .. :try_end_4c3} :catchall_4c1
32375     throw v1
32376 .end method
32378 .method dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
32379     .registers 21
32381     const-string v1, "ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)"
32383     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32385     const-string v1, "  Main stack:"
32387     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32389     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32391     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
32393     const-string v4, "  "
32395     const-string v5, "Hist"
32397     const/4 v6, 0x1
32399     if-nez p5, :cond_1b8
32401     const/4 v7, 0x1
32403     :goto_16
32404     move-object v1, p1
32406     move-object v2, p2
32408     move/from16 v8, p6
32410     move-object/from16 v9, p7
32412     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32414     const-string v1, " "
32416     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32418     const-string v1, "  Running activities (most recent first):"
32420     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32422     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32424     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mLRUActivities:Ljava/util/ArrayList;
32426     const-string v4, "  "
32428     const-string v5, "Run"
32430     const/4 v6, 0x0
32432     if-nez p5, :cond_1bb
32434     const/4 v7, 0x1
32436     :goto_35
32437     const/4 v8, 0x0
32439     move-object v1, p1
32441     move-object v2, p2
32443     move-object/from16 v9, p7
32445     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32447     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32449     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mWaitingVisibleActivities:Ljava/util/ArrayList;
32451     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32453     move-result v1
32455     if-lez v1, :cond_65
32457     const-string v1, " "
32459     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32461     const-string v1, "  Activities waiting for another to become visible:"
32463     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32465     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32467     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mWaitingVisibleActivities:Ljava/util/ArrayList;
32469     const-string v4, "  "
32471     const-string v5, "Wait"
32473     const/4 v6, 0x0
32475     if-nez p5, :cond_1be
32477     const/4 v7, 0x1
32479     :goto_5d
32480     const/4 v8, 0x0
32482     move-object v1, p1
32484     move-object v2, p2
32486     move-object/from16 v9, p7
32488     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32490     :cond_65
32491     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32493     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mStoppingActivities:Ljava/util/ArrayList;
32495     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32497     move-result v1
32499     if-lez v1, :cond_8d
32501     const-string v1, " "
32503     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32505     const-string v1, "  Activities waiting to stop:"
32507     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32509     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32511     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mStoppingActivities:Ljava/util/ArrayList;
32513     const-string v4, "  "
32515     const-string v5, "Stop"
32517     const/4 v6, 0x0
32519     if-nez p5, :cond_1c1
32521     const/4 v7, 0x1
32523     :goto_85
32524     const/4 v8, 0x0
32526     move-object v1, p1
32528     move-object v2, p2
32530     move-object/from16 v9, p7
32532     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32534     :cond_8d
32535     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32537     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mGoingToSleepActivities:Ljava/util/ArrayList;
32539     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32541     move-result v1
32543     if-lez v1, :cond_b5
32545     const-string v1, " "
32547     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32549     const-string v1, "  Activities waiting to sleep:"
32551     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32553     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32555     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mGoingToSleepActivities:Ljava/util/ArrayList;
32557     const-string v4, "  "
32559     const-string v5, "Sleep"
32561     const/4 v6, 0x0
32563     if-nez p5, :cond_1c4
32565     const/4 v7, 0x1
32567     :goto_ad
32568     const/4 v8, 0x0
32570     move-object v1, p1
32572     move-object v2, p2
32574     move-object/from16 v9, p7
32576     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32578     :cond_b5
32579     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32581     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mFinishingActivities:Ljava/util/ArrayList;
32583     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32585     move-result v1
32587     if-lez v1, :cond_dd
32589     const-string v1, " "
32591     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32593     const-string v1, "  Activities waiting to finish:"
32595     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32597     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32599     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mFinishingActivities:Ljava/util/ArrayList;
32601     const-string v4, "  "
32603     const-string v5, "Fin"
32605     const/4 v6, 0x0
32607     if-nez p5, :cond_1c7
32609     const/4 v7, 0x1
32611     :goto_d5
32612     const/4 v8, 0x0
32614     move-object v1, p1
32616     move-object v2, p2
32618     move-object/from16 v9, p7
32620     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
32622     :cond_dd
32623     const-string v1, " "
32625     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32627     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32629     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
32631     if-eqz v1, :cond_102
32633     new-instance v1, Ljava/lang/StringBuilder;
32635     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32637     const-string v2, "  mPausingActivity: "
32639     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32641     move-result-object v1
32643     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32645     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
32647     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32649     move-result-object v1
32651     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32653     move-result-object v1
32655     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32657     :cond_102
32658     new-instance v1, Ljava/lang/StringBuilder;
32660     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32662     const-string v2, "  mResumedActivity: "
32664     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32666     move-result-object v1
32668     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32670     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
32672     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32674     move-result-object v1
32676     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32678     move-result-object v1
32680     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32682     new-instance v1, Ljava/lang/StringBuilder;
32684     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32686     const-string v2, "  mFocusedActivity: "
32688     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32690     move-result-object v1
32692     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
32694     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32696     move-result-object v1
32698     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32700     move-result-object v1
32702     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32704     if-eqz p5, :cond_184
32706     new-instance v1, Ljava/lang/StringBuilder;
32708     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32710     const-string v2, "  mLastPausedActivity: "
32712     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32714     move-result-object v1
32716     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32718     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
32720     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32722     move-result-object v1
32724     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32726     move-result-object v1
32728     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32730     new-instance v1, Ljava/lang/StringBuilder;
32732     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32734     const-string v2, "  mSleepTimeout: "
32736     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32738     move-result-object v1
32740     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32742     iget-boolean v2, v2, Lcom/android/server/am/ActivityStack;->mSleepTimeout:Z
32744     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
32746     move-result-object v1
32748     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32750     move-result-object v1
32752     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32754     new-instance v1, Ljava/lang/StringBuilder;
32756     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32758     const-string v2, "  mDismissKeyguardOnNextActivity: "
32760     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32762     move-result-object v1
32764     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32766     iget-boolean v2, v2, Lcom/android/server/am/ActivityStack;->mDismissKeyguardOnNextActivity:Z
32768     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
32770     move-result-object v1
32772     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32774     move-result-object v1
32776     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32778     :cond_184
32779     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
32781     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32783     move-result v1
32785     if-lez v1, :cond_1ea
32787     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
32789     const-string v1, "  Recent tasks:"
32791     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32793     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
32795     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
32797     move-result v10
32799     const/4 v11, 0x0
32801     :goto_19b
32802     if-ge v11, v10, :cond_1ea
32804     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
32806     invoke-virtual {v1, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32808     move-result-object v12
32810     check-cast v12, Lcom/android/server/am/TaskRecord;
32812     if-eqz p7, :cond_1ca
32814     iget-object v1, v12, Lcom/android/server/am/TaskRecord;->realActivity:Landroid/content/ComponentName;
32816     if-eqz v1, :cond_1b5
32818     iget-object v1, v12, Lcom/android/server/am/TaskRecord;->realActivity:Landroid/content/ComponentName;
32820     move-object/from16 v0, p7
32822     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32824     move-result v1
32826     if-nez v1, :cond_1ca
32828     :cond_1b5
32829     :goto_1b5
32830     add-int/lit8 v11, v11, 0x1
32832     goto :goto_19b
32834     :cond_1b8
32835     const/4 v7, 0x0
32837     goto/16 :goto_16
32839     :cond_1bb
32840     const/4 v7, 0x0
32842     goto/16 :goto_35
32844     :cond_1be
32845     const/4 v7, 0x0
32847     goto/16 :goto_5d
32849     :cond_1c1
32850     const/4 v7, 0x0
32852     goto/16 :goto_85
32854     :cond_1c4
32855     const/4 v7, 0x0
32857     goto/16 :goto_ad
32859     :cond_1c7
32860     const/4 v7, 0x0
32862     goto/16 :goto_d5
32864     :cond_1ca
32865     const-string v1, "  * Recent #"
32867     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32869     invoke-virtual {p2, v11}, Ljava/io/PrintWriter;->print(I)V
32871     const-string v1, ": "
32873     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32875     invoke-virtual {p2, v12}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
32877     if-eqz p5, :cond_1b5
32879     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
32881     invoke-virtual {v1, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32883     move-result-object v1
32885     check-cast v1, Lcom/android/server/am/TaskRecord;
32887     const-string v2, "    "
32889     invoke-virtual {v1, p2, v2}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
32891     goto :goto_1b5
32893     :cond_1ea
32894     if-eqz p5, :cond_209
32896     const-string v1, " "
32898     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32900     new-instance v1, Ljava/lang/StringBuilder;
32902     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
32904     const-string v2, "  mCurTask: "
32906     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32908     move-result-object v1
32910     iget v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurTask:I
32912     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
32914     move-result-object v1
32916     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32918     move-result-object v1
32920     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32922     :cond_209
32923     const/4 v1, 0x1
32925     return v1
32926 .end method
32928 .method protected dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
32929     .registers 25
32931     new-instance v10, Ljava/util/ArrayList;
32933     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
32935     const-string v2, "all"
32937     move-object/from16 v0, p3
32939     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32941     move-result v2
32943     if-eqz v2, :cond_38
32945     monitor-enter p0
32947     :try_start_10
32948     move-object/from16 v0, p0
32950     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
32952     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
32954     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
32956     move-result-object v12
32958     :goto_1a
32959     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
32961     move-result v2
32963     if-eqz v2, :cond_2f
32965     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
32967     move-result-object v17
32969     check-cast v17, Lcom/android/server/am/ActivityRecord;
32971     move-object/from16 v0, v17
32973     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
32975     goto :goto_1a
32977     :catchall_2c
32978     move-exception v2
32980     monitor-exit p0
32981     :try_end_2e
32982     .catchall {:try_start_10 .. :try_end_2e} :catchall_2c
32984     throw v2
32986     :cond_2f
32987     :try_start_2f
32988     monitor-exit p0
32989     :try_end_30
32990     .catchall {:try_start_2f .. :try_end_30} :catchall_2c
32992     :goto_30
32993     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
32995     move-result v2
32997     if-gtz v2, :cond_a1
32999     const/4 v2, 0x0
33001     :goto_37
33002     return v2
33004     :cond_38
33005     const-string v2, "top"
33007     move-object/from16 v0, p3
33009     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33011     move-result v2
33013     if-eqz v2, :cond_65
33015     monitor-enter p0
33017     :try_start_43
33018     move-object/from16 v0, p0
33020     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
33022     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
33024     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
33026     move-result v9
33028     if-lez v9, :cond_60
33030     move-object/from16 v0, p0
33032     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
33034     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
33036     add-int/lit8 v3, v9, -0x1
33038     invoke-virtual {v2, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
33040     move-result-object v2
33042     check-cast v2, Lcom/android/server/am/ActivityRecord;
33044     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33046     :cond_60
33047     monitor-exit p0
33049     goto :goto_30
33051     :catchall_62
33052     move-exception v2
33054     monitor-exit p0
33055     :try_end_64
33056     .catchall {:try_start_43 .. :try_end_64} :catchall_62
33058     throw v2
33060     :cond_65
33061     new-instance v14, Lcom/android/server/am/ActivityManagerService$ItemMatcher;
33063     invoke-direct {v14}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
33065     move-object/from16 v0, p3
33067     invoke-virtual {v14, v0}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->build(Ljava/lang/String;)V
33069     monitor-enter p0
33071     :try_start_70
33072     move-object/from16 v0, p0
33074     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
33076     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
33078     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
33080     move-result-object v12
33082     :cond_7a
33083     :goto_7a
33084     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
33086     move-result v2
33088     if-eqz v2, :cond_9f
33090     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
33092     move-result-object v17
33094     check-cast v17, Lcom/android/server/am/ActivityRecord;
33096     move-object/from16 v0, v17
33098     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
33100     invoke-virtual {v2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
33102     move-result-object v2
33104     move-object/from16 v0, v17
33106     invoke-virtual {v14, v0, v2}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
33108     move-result v2
33110     if-eqz v2, :cond_7a
33112     move-object/from16 v0, v17
33114     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33116     goto :goto_7a
33118     :catchall_9c
33119     move-exception v2
33121     monitor-exit p0
33122     :try_end_9e
33123     .catchall {:try_start_70 .. :try_end_9e} :catchall_9c
33125     throw v2
33127     :cond_9f
33128     :try_start_9f
33129     monitor-exit p0
33130     :try_end_a0
33131     .catchall {:try_start_9f .. :try_end_a0} :catchall_9c
33133     goto :goto_30
33135     :cond_a1
33136     move-object/from16 v0, p4
33138     array-length v2, v0
33140     sub-int v2, v2, p5
33142     new-array v7, v2, [Ljava/lang/String;
33144     move-object/from16 v0, p4
33146     array-length v2, v0
33148     const/4 v3, 0x2
33150     if-le v2, v3, :cond_bb
33152     const/4 v2, 0x0
33154     move-object/from16 v0, p4
33156     array-length v3, v0
33158     sub-int v3, v3, p5
33160     move-object/from16 v0, p4
33162     move/from16 v1, p5
33164     invoke-static {v0, v1, v7, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
33166     :cond_bb
33167     const/4 v13, 0x0
33169     const/4 v15, 0x0
33171     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
33173     move-result v2
33175     add-int/lit8 v11, v2, -0x1
33177     :goto_c3
33178     if-ltz v11, :cond_11b
33180     invoke-virtual {v10, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
33182     move-result-object v16
33184     check-cast v16, Lcom/android/server/am/ActivityRecord;
33186     if-eqz v15, :cond_d0
33188     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
33190     :cond_d0
33191     const/4 v15, 0x1
33193     monitor-enter p0
33195     :try_start_d2
33196     move-object/from16 v0, v16
33198     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
33200     if-eq v13, v2, :cond_101
33202     move-object/from16 v0, v16
33204     iget-object v13, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
33206     const-string v2, "TASK "
33208     move-object/from16 v0, p2
33210     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33212     iget-object v2, v13, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
33214     move-object/from16 v0, p2
33216     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33218     const-string v2, " id="
33220     move-object/from16 v0, p2
33222     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33224     iget v2, v13, Lcom/android/server/am/TaskRecord;->taskId:I
33226     move-object/from16 v0, p2
33228     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(I)V
33230     if-eqz p6, :cond_101
33232     const-string v2, "  "
33234     move-object/from16 v0, p2
33236     invoke-virtual {v13, v0, v2}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
33238     :cond_101
33239     monitor-exit p0
33240     :try_end_102
33241     .catchall {:try_start_d2 .. :try_end_102} :catchall_118
33243     const-string v3, "  "
33245     invoke-virtual {v10, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
33247     move-result-object v6
33249     check-cast v6, Lcom/android/server/am/ActivityRecord;
33251     move-object/from16 v2, p0
33253     move-object/from16 v4, p1
33255     move-object/from16 v5, p2
33257     move/from16 v8, p6
33259     invoke-direct/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ActivityRecord;[Ljava/lang/String;Z)V
33261     add-int/lit8 v11, v11, -0x1
33263     goto :goto_c3
33265     :catchall_118
33266     move-exception v2
33268     :try_start_119
33269     monitor-exit p0
33270     :try_end_11a
33271     .catchall {:try_start_119 .. :try_end_11a} :catchall_118
33273     throw v2
33275     :cond_11b
33276     const/4 v2, 0x1
33278     goto/16 :goto_37
33279 .end method
33281 .method final dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V
33282     .registers 85
33284     const/16 v38, 0x0
33286     const/16 v53, 0x0
33288     const/16 v57, 0x0
33290     :goto_6
33291     move-object/from16 v0, p4
33293     array-length v5, v0
33295     move/from16 v0, v57
33297     if-ge v0, v5, :cond_22
33299     aget-object v56, p4, v57
33301     if-eqz v56, :cond_22
33303     invoke-virtual/range {v56 .. v56}, Ljava/lang/String;->length()I
33305     move-result v5
33307     if-lez v5, :cond_22
33309     const/4 v5, 0x0
33311     move-object/from16 v0, v56
33313     invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
33315     move-result v5
33317     const/16 v6, 0x2d
33319     if-eq v5, v6, :cond_31
33321     :cond_22
33322     move-object/from16 v0, p0
33324     move-object/from16 v1, p2
33326     move/from16 v2, v57
33328     move-object/from16 v3, p4
33330     invoke-virtual {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
33332     move-result-object v60
33334     if-nez v60, :cond_9d
33336     :cond_30
33337     :goto_30
33338     return-void
33340     :cond_31
33341     add-int/lit8 v57, v57, 0x1
33343     const-string v5, "-a"
33345     move-object/from16 v0, v56
33347     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33349     move-result v5
33351     if-eqz v5, :cond_40
33353     const/16 v38, 0x1
33355     goto :goto_6
33357     :cond_40
33358     const-string v5, "--oom"
33360     move-object/from16 v0, v56
33362     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33364     move-result v5
33366     if-eqz v5, :cond_4d
33368     const/16 v53, 0x1
33370     goto :goto_6
33372     :cond_4d
33373     const-string v5, "-h"
33375     move-object/from16 v0, v56
33377     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33379     move-result v5
33381     if-eqz v5, :cond_7b
33383     const-string v5, "meminfo dump options: [-a] [--oom] [process]"
33385     move-object/from16 v0, p2
33387     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33389     const-string v5, "  -a: include all available information for each process."
33391     move-object/from16 v0, p2
33393     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33395     const-string v5, "  --oom: only show processes organized by oom adj."
33397     move-object/from16 v0, p2
33399     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33401     const-string v5, "If [process] is specified it can be the name or "
33403     move-object/from16 v0, p2
33405     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33407     const-string v5, "pid of a specific process to dump."
33409     move-object/from16 v0, p2
33411     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33413     goto :goto_30
33415     :cond_7b
33416     new-instance v5, Ljava/lang/StringBuilder;
33418     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
33420     const-string v6, "Unknown argument: "
33422     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33424     move-result-object v5
33426     move-object/from16 v0, v56
33428     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33430     move-result-object v5
33432     const-string v6, "; use -h for help"
33434     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33436     move-result-object v5
33438     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33440     move-result-object v5
33442     move-object/from16 v0, p2
33444     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33446     goto/16 :goto_6
33448     :cond_9d
33449     const-string v5, "--checkin"
33451     move-object/from16 v0, p4
33453     invoke-static {v0, v5}, Lcom/android/server/am/ActivityManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
33455     move-result v43
33457     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
33459     move-result-wide v72
33461     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
33463     move-result-wide v62
33465     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
33467     move-result v5
33469     const/4 v6, 0x1
33471     if-eq v5, v6, :cond_b6
33473     if-eqz v43, :cond_b8
33475     :cond_b6
33476     const/16 v38, 0x1
33478     :cond_b8
33479     if-eqz v43, :cond_1ec
33481     new-instance v5, Ljava/lang/StringBuilder;
33483     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
33485     move-wide/from16 v0, v72
33487     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
33489     move-result-object v5
33491     const-string v6, ","
33493     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33495     move-result-object v5
33497     move-wide/from16 v0, v62
33499     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
33501     move-result-object v5
33503     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33505     move-result-object v5
33507     move-object/from16 v0, p2
33509     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33511     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
33513     :goto_dd
33514     move-object/from16 v0, p4
33516     array-length v5, v0
33518     sub-int v5, v5, v57
33520     new-array v0, v5, [Ljava/lang/String;
33522     move-object/from16 v42, v0
33524     const/4 v5, 0x0
33526     move-object/from16 v0, p4
33528     array-length v6, v0
33530     sub-int v6, v6, v57
33532     move-object/from16 v0, p4
33534     move/from16 v1, v57
33536     move-object/from16 v2, v42
33538     invoke-static {v0, v1, v2, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
33540     new-instance v59, Ljava/util/ArrayList;
33542     invoke-direct/range {v59 .. v59}, Ljava/util/ArrayList;-><init>()V
33544     const-wide/16 v12, 0x0
33546     const-wide/16 v17, 0x0
33548     const-wide/16 v22, 0x0
33550     const/16 v5, 0x9
33552     new-array v0, v5, [J
33554     move-object/from16 v50, v0
33556     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
33558     array-length v5, v5
33560     new-array v0, v5, [J
33562     move-object/from16 v55, v0
33564     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
33566     array-length v5, v5
33568     new-array v0, v5, [Ljava/util/ArrayList;
33570     move-object/from16 v54, v0
33572     check-cast v54, [Ljava/util/ArrayList;
33574     const-wide/16 v68, 0x0
33576     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
33578     move-result v5
33580     add-int/lit8 v41, v5, -0x1
33582     :goto_11e
33583     if-ltz v41, :cond_272
33585     move-object/from16 v0, v60
33587     move/from16 v1, v41
33589     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
33591     move-result-object v61
33593     check-cast v61, Lcom/android/server/am/ProcessRecord;
33595     move-object/from16 v0, v61
33597     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
33599     if-eqz v5, :cond_26b
33601     if-nez v43, :cond_167
33603     if-eqz v38, :cond_167
33605     new-instance v5, Ljava/lang/StringBuilder;
33607     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
33609     const-string v6, "\n** MEMINFO in pid "
33611     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33613     move-result-object v5
33615     move-object/from16 v0, v61
33617     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
33619     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
33621     move-result-object v5
33623     const-string v6, " ["
33625     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33627     move-result-object v5
33629     move-object/from16 v0, v61
33631     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
33633     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33635     move-result-object v5
33637     const-string v6, "] **"
33639     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33641     move-result-object v5
33643     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33645     move-result-object v5
33647     move-object/from16 v0, p2
33649     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33651     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
33653     :cond_167
33654     const/16 v48, 0x0
33656     if-eqz v38, :cond_22a
33658     :try_start_16b
33659     move-object/from16 v0, v61
33661     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
33663     move-object/from16 v0, p1
33665     move/from16 v1, v43
33667     move/from16 v2, v38
33669     move-object/from16 v3, v42
33671     invoke-interface {v5, v0, v1, v2, v3}, Landroid/app/IApplicationThread;->dumpMemInfo(Ljava/io/FileDescriptor;ZZ[Ljava/lang/String;)Landroid/os/Debug$MemoryInfo;
33672     :try_end_17a
33673     .catch Landroid/os/RemoteException; {:try_start_16b .. :try_end_17a} :catch_21b
33675     move-result-object v48
33677     :cond_17b
33678     :goto_17b
33679     if-nez v43, :cond_26b
33681     if-eqz v48, :cond_26b
33683     invoke-virtual/range {v48 .. v48}, Landroid/os/Debug$MemoryInfo;->getTotalPss()I
33685     move-result v5
33687     int-to-long v7, v5
33689     add-long v68, v68, v7
33691     new-instance v4, Lcom/android/server/am/ActivityManagerService$MemItem;
33693     new-instance v5, Ljava/lang/StringBuilder;
33695     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
33697     move-object/from16 v0, v61
33699     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
33701     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33703     move-result-object v5
33705     const-string v6, " (pid "
33707     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33709     move-result-object v5
33711     move-object/from16 v0, v61
33713     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
33715     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
33717     move-result-object v5
33719     const-string v6, ")"
33721     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33723     move-result-object v5
33725     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33727     move-result-object v5
33729     move-object/from16 v0, v61
33731     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
33733     const/4 v9, 0x0
33735     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
33737     move-object/from16 v0, v59
33739     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33741     move-object/from16 v0, v48
33743     iget v5, v0, Landroid/os/Debug$MemoryInfo;->nativePss:I
33745     int-to-long v5, v5
33747     add-long/2addr v12, v5
33749     move-object/from16 v0, v48
33751     iget v5, v0, Landroid/os/Debug$MemoryInfo;->dalvikPss:I
33753     int-to-long v5, v5
33755     add-long v17, v17, v5
33757     move-object/from16 v0, v48
33759     iget v5, v0, Landroid/os/Debug$MemoryInfo;->otherPss:I
33761     int-to-long v5, v5
33763     add-long v22, v22, v5
33765     const/16 v29, 0x0
33767     :goto_1d0
33768     const/16 v5, 0x9
33770     move/from16 v0, v29
33772     if-ge v0, v5, :cond_23a
33774     move-object/from16 v0, v48
33776     move/from16 v1, v29
33778     invoke-virtual {v0, v1}, Landroid/os/Debug$MemoryInfo;->getOtherPss(I)I
33780     move-result v5
33782     int-to-long v0, v5
33784     move-wide/from16 v46, v0
33786     aget-wide v5, v50, v29
33788     add-long v5, v5, v46
33790     aput-wide v5, v50, v29
33792     sub-long v22, v22, v46
33794     add-int/lit8 v29, v29, 0x1
33796     goto :goto_1d0
33798     :cond_1ec
33799     const-string v5, "Applications Memory Usage (kB):"
33801     move-object/from16 v0, p2
33803     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33805     new-instance v5, Ljava/lang/StringBuilder;
33807     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
33809     const-string v6, "Uptime: "
33811     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33813     move-result-object v5
33815     move-wide/from16 v0, v72
33817     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
33819     move-result-object v5
33821     const-string v6, " Realtime: "
33823     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33825     move-result-object v5
33827     move-wide/from16 v0, v62
33829     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
33831     move-result-object v5
33833     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33835     move-result-object v5
33837     move-object/from16 v0, p2
33839     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33841     goto/16 :goto_dd
33843     :catch_21b
33844     move-exception v39
33846     if-nez v43, :cond_17b
33848     const-string v5, "Got RemoteException!"
33850     move-object/from16 v0, p2
33852     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33854     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
33856     goto/16 :goto_17b
33858     :cond_22a
33859     new-instance v48, Landroid/os/Debug$MemoryInfo;
33861     invoke-direct/range {v48 .. v48}, Landroid/os/Debug$MemoryInfo;-><init>()V
33863     move-object/from16 v0, v61
33865     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
33867     move-object/from16 v0, v48
33869     invoke-static {v5, v0}, Landroid/os/Debug;->getMemoryInfo(ILandroid/os/Debug$MemoryInfo;)V
33871     goto/16 :goto_17b
33873     :cond_23a
33874     const/16 v51, 0x0
33876     :goto_23c
33877     move-object/from16 v0, v55
33879     array-length v5, v0
33881     move/from16 v0, v51
33883     if-ge v0, v5, :cond_26b
33885     move-object/from16 v0, v61
33887     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
33889     sget-object v6, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
33891     aget v6, v6, v51
33893     if-le v5, v6, :cond_256
33895     move-object/from16 v0, v55
33897     array-length v5, v0
33899     add-int/lit8 v5, v5, -0x1
33901     move/from16 v0, v51
33903     if-ne v0, v5, :cond_26f
33905     :cond_256
33906     aget-wide v5, v55, v51
33908     add-long/2addr v5, v7
33910     aput-wide v5, v55, v51
33912     aget-object v5, v54, v51
33914     if-nez v5, :cond_266
33916     new-instance v5, Ljava/util/ArrayList;
33918     invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
33920     aput-object v5, v54, v51
33922     :cond_266
33923     aget-object v5, v54, v51
33925     invoke-virtual {v5, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33927     :cond_26b
33928     add-int/lit8 v41, v41, -0x1
33930     goto/16 :goto_11e
33932     :cond_26f
33933     add-int/lit8 v51, v51, 0x1
33935     goto :goto_23c
33937     :cond_272
33938     if-nez v43, :cond_30
33940     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
33942     move-result v5
33944     const/4 v6, 0x1
33946     if-le v5, v6, :cond_30
33948     new-instance v37, Ljava/util/ArrayList;
33950     invoke-direct/range {v37 .. v37}, Ljava/util/ArrayList;-><init>()V
33952     new-instance v9, Lcom/android/server/am/ActivityManagerService$MemItem;
33954     const-string v10, "Native"
33956     const-string v11, "Native"
33958     const/4 v14, -0x1
33960     invoke-direct/range {v9 .. v14}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
33962     move-object/from16 v0, v37
33964     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33966     new-instance v14, Lcom/android/server/am/ActivityManagerService$MemItem;
33968     const-string v15, "Dalvik"
33970     const-string v16, "Dalvik"
33972     const/16 v19, -0x2
33974     invoke-direct/range {v14 .. v19}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
33976     move-object/from16 v0, v37
33978     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33980     new-instance v19, Lcom/android/server/am/ActivityManagerService$MemItem;
33982     const-string v20, "Unknown"
33984     const-string v21, "Unknown"
33986     const/16 v24, -0x3
33988     invoke-direct/range {v19 .. v24}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
33990     move-object/from16 v0, v37
33992     move-object/from16 v1, v19
33994     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
33996     const/16 v29, 0x0
33998     :goto_2b3
33999     const/16 v5, 0x9
34001     move/from16 v0, v29
34003     if-ge v0, v5, :cond_2d0
34005     invoke-static/range {v29 .. v29}, Landroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String;
34007     move-result-object v25
34009     new-instance v24, Lcom/android/server/am/ActivityManagerService$MemItem;
34011     aget-wide v27, v50, v29
34013     move-object/from16 v26, v25
34015     invoke-direct/range {v24 .. v29}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
34017     move-object/from16 v0, v37
34019     move-object/from16 v1, v24
34021     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
34023     add-int/lit8 v29, v29, 0x1
34025     goto :goto_2b3
34027     :cond_2d0
34028     new-instance v52, Ljava/util/ArrayList;
34030     invoke-direct/range {v52 .. v52}, Ljava/util/ArrayList;-><init>()V
34032     const/16 v29, 0x0
34034     :goto_2d7
34035     move-object/from16 v0, v55
34037     array-length v5, v0
34039     move/from16 v0, v29
34041     if-ge v0, v5, :cond_309
34043     aget-wide v5, v55, v29
34045     const-wide/16 v9, 0x0
34047     cmp-long v5, v5, v9
34049     if-eqz v5, :cond_306
34051     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
34053     aget-object v25, v5, v29
34055     new-instance v30, Lcom/android/server/am/ActivityManagerService$MemItem;
34057     aget-wide v33, v55, v29
34059     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
34061     aget v35, v5, v29
34063     move-object/from16 v31, v25
34065     move-object/from16 v32, v25
34067     invoke-direct/range {v30 .. v35}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
34069     aget-object v5, v54, v29
34071     move-object/from16 v0, v30
34073     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
34075     move-object/from16 v0, v52
34077     move-object/from16 v1, v30
34079     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
34081     :cond_306
34082     add-int/lit8 v29, v29, 0x1
34084     goto :goto_2d7
34086     :cond_309
34087     if-nez p7, :cond_30d
34089     if-eqz p8, :cond_433
34091     :cond_30d
34092     if-eqz p7, :cond_319
34094     const-string v5, "total"
34096     const/4 v6, 0x0
34098     move-object/from16 v0, p7
34100     move-wide/from16 v1, v68
34102     invoke-static {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
34104     :cond_319
34105     if-eqz p8, :cond_325
34107     const-string v5, "total"
34109     const/4 v6, 0x1
34111     move-object/from16 v0, p8
34113     move-wide/from16 v1, v68
34115     invoke-static {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
34117     :cond_325
34118     const/16 v40, 0x1
34120     const/16 v41, 0x0
34122     :goto_329
34123     invoke-virtual/range {v52 .. v52}, Ljava/util/ArrayList;->size()I
34125     move-result v5
34127     move/from16 v0, v41
34129     if-ge v0, v5, :cond_433
34131     move-object/from16 v0, v52
34133     move/from16 v1, v41
34135     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
34137     move-result-object v49
34139     check-cast v49, Lcom/android/server/am/ActivityManagerService$MemItem;
34141     move-object/from16 v0, v49
34143     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
34145     if-eqz v5, :cond_34c
34147     move-object/from16 v0, v49
34149     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
34151     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
34153     move-result v5
34155     const/4 v6, 0x1
34157     if-ge v5, v6, :cond_34f
34159     :cond_34c
34160     :goto_34c
34161     add-int/lit8 v41, v41, 0x1
34163     goto :goto_329
34165     :cond_34f
34166     move-object/from16 v0, v49
34168     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34170     const/4 v6, 0x5
34172     if-lt v5, v6, :cond_364
34174     move-object/from16 v0, v49
34176     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34178     const/4 v6, 0x6
34180     if-eq v5, v6, :cond_364
34182     move-object/from16 v0, v49
34184     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34186     const/4 v6, 0x7
34188     if-ne v5, v6, :cond_34c
34190     :cond_364
34191     if-eqz p7, :cond_373
34193     move-object/from16 v0, v49
34195     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34197     if-gtz v5, :cond_373
34199     const-string v5, " / "
34201     move-object/from16 v0, p7
34203     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34205     :cond_373
34206     if-eqz p8, :cond_38d
34208     move-object/from16 v0, v49
34210     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34212     if-ltz v5, :cond_3e4
34214     if-eqz v40, :cond_386
34216     const-string v5, ":"
34218     move-object/from16 v0, p8
34220     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34222     const/16 v40, 0x0
34224     :cond_386
34225     const-string v5, "\n\t at "
34227     move-object/from16 v0, p8
34229     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34231     :cond_38d
34232     :goto_38d
34233     const/16 v29, 0x0
34235     :goto_38f
34236     move-object/from16 v0, v49
34238     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
34240     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
34242     move-result v5
34244     move/from16 v0, v29
34246     if-ge v0, v5, :cond_3ec
34248     move-object/from16 v0, v49
34250     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
34252     move/from16 v0, v29
34254     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
34256     move-result-object v48
34258     check-cast v48, Lcom/android/server/am/ActivityManagerService$MemItem;
34260     if-lez v29, :cond_3bb
34262     if-eqz p7, :cond_3b2
34264     const-string v5, " "
34266     move-object/from16 v0, p7
34268     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34270     :cond_3b2
34271     if-eqz p8, :cond_3bb
34273     const-string v5, "$"
34275     move-object/from16 v0, p8
34277     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34279     :cond_3bb
34280     if-eqz p7, :cond_3d1
34282     move-object/from16 v0, v49
34284     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34286     if-gtz v5, :cond_3d1
34288     move-object/from16 v0, v48
34290     iget-wide v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
34292     move-object/from16 v0, v48
34294     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->shortLabel:Ljava/lang/String;
34296     const/4 v10, 0x0
34298     move-object/from16 v0, p7
34300     invoke-static {v0, v5, v6, v9, v10}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
34302     :cond_3d1
34303     if-eqz p8, :cond_3e1
34305     move-object/from16 v0, v48
34307     iget-wide v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
34309     move-object/from16 v0, v48
34311     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->shortLabel:Ljava/lang/String;
34313     const/4 v10, 0x1
34315     move-object/from16 v0, p8
34317     invoke-static {v0, v5, v6, v9, v10}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
34319     :cond_3e1
34320     add-int/lit8 v29, v29, 0x1
34322     goto :goto_38f
34324     :cond_3e4
34325     const-string v5, "$"
34327     move-object/from16 v0, p8
34329     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34331     goto :goto_38d
34333     :cond_3ec
34334     if-eqz p8, :cond_34c
34336     move-object/from16 v0, v49
34338     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34340     if-ltz v5, :cond_34c
34342     const-string v5, "("
34344     move-object/from16 v0, p8
34346     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34348     const/16 v44, 0x0
34350     :goto_3fd
34351     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
34353     array-length v5, v5
34355     move/from16 v0, v44
34357     if-ge v0, v5, :cond_42a
34359     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
34361     aget v5, v5, v44
34363     move-object/from16 v0, v49
34365     iget v6, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
34367     if-ne v5, v6, :cond_427
34369     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
34371     aget-object v5, v5, v44
34373     move-object/from16 v0, p8
34375     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34377     const-string v5, ":"
34379     move-object/from16 v0, p8
34381     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34383     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
34385     aget v5, v5, v44
34387     move-object/from16 v0, p8
34389     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
34391     :cond_427
34392     add-int/lit8 v44, v44, 0x1
34394     goto :goto_3fd
34396     :cond_42a
34397     const-string v5, ")"
34399     move-object/from16 v0, p8
34401     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34403     goto/16 :goto_34c
34405     :cond_433
34406     if-nez p5, :cond_44e
34408     if-nez v53, :cond_44e
34410     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
34412     const-string v5, "Total PSS by process:"
34414     move-object/from16 v0, p2
34416     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34418     const-string v5, "  "
34420     const/4 v6, 0x1
34422     move-object/from16 v0, p2
34424     move-object/from16 v1, v59
34426     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
34428     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
34430     :cond_44e
34431     const-string v5, "Total PSS by OOM adjustment:"
34433     move-object/from16 v0, p2
34435     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34437     const-string v5, "  "
34439     const/4 v6, 0x0
34441     move-object/from16 v0, p2
34443     move-object/from16 v1, v52
34445     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
34447     if-nez v53, :cond_479
34449     if-eqz p6, :cond_54b
34451     move-object/from16 v58, p6
34453     :goto_465
34454     invoke-virtual/range {v58 .. v58}, Ljava/io/PrintWriter;->println()V
34456     const-string v5, "Total PSS by category:"
34458     move-object/from16 v0, v58
34460     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34462     const-string v5, "  "
34464     const/4 v6, 0x1
34466     move-object/from16 v0, v58
34468     move-object/from16 v1, v37
34470     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
34472     :cond_479
34473     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
34475     const-string v5, "Total PSS: "
34477     move-object/from16 v0, p2
34479     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34481     move-object/from16 v0, p2
34483     move-wide/from16 v1, v68
34485     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
34487     const-string v5, " kB"
34489     move-object/from16 v0, p2
34491     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34493     const/4 v5, 0x1
34495     new-array v0, v5, [I
34497     move-object/from16 v36, v0
34499     const/4 v5, 0x0
34501     const/16 v6, 0x2020
34503     aput v6, v36, v5
34505     const/4 v5, 0x1
34507     new-array v0, v5, [J
34509     move-object/from16 v45, v0
34511     const-string v5, "/sys/kernel/mm/ksm/pages_shared"
34513     const/4 v6, 0x0
34515     const/4 v9, 0x0
34517     move-object/from16 v0, v36
34519     move-object/from16 v1, v45
34521     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
34523     const/4 v5, 0x0
34525     aget-wide v5, v45, v5
34527     const-wide/16 v9, 0x1000
34529     mul-long/2addr v5, v9
34531     const-wide/16 v9, 0x400
34533     div-long v64, v5, v9
34535     const/4 v5, 0x0
34537     const-wide/16 v9, 0x0
34539     aput-wide v9, v45, v5
34541     const-string v5, "/sys/kernel/mm/ksm/pages_sharing"
34543     const/4 v6, 0x0
34545     const/4 v9, 0x0
34547     move-object/from16 v0, v36
34549     move-object/from16 v1, v45
34551     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
34553     const/4 v5, 0x0
34555     aget-wide v5, v45, v5
34557     const-wide/16 v9, 0x1000
34559     mul-long/2addr v5, v9
34561     const-wide/16 v9, 0x400
34563     div-long v66, v5, v9
34565     const/4 v5, 0x0
34567     const-wide/16 v9, 0x0
34569     aput-wide v9, v45, v5
34571     const-string v5, "/sys/kernel/mm/ksm/pages_unshared"
34573     const/4 v6, 0x0
34575     const/4 v9, 0x0
34577     move-object/from16 v0, v36
34579     move-object/from16 v1, v45
34581     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
34583     const/4 v5, 0x0
34585     aget-wide v5, v45, v5
34587     const-wide/16 v9, 0x1000
34589     mul-long/2addr v5, v9
34591     const-wide/16 v9, 0x400
34593     div-long v70, v5, v9
34595     const/4 v5, 0x0
34597     const-wide/16 v9, 0x0
34599     aput-wide v9, v45, v5
34601     const-string v5, "/sys/kernel/mm/ksm/pages_volatile"
34603     const/4 v6, 0x0
34605     const/4 v9, 0x0
34607     move-object/from16 v0, v36
34609     move-object/from16 v1, v45
34611     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
34613     const/4 v5, 0x0
34615     aget-wide v5, v45, v5
34617     const-wide/16 v9, 0x1000
34619     mul-long/2addr v5, v9
34621     const-wide/16 v9, 0x400
34623     div-long v74, v5, v9
34625     const-string v5, "      KSM: "
34627     move-object/from16 v0, p2
34629     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34631     move-object/from16 v0, p2
34633     move-wide/from16 v1, v66
34635     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
34637     const-string v5, " kB saved from shared "
34639     move-object/from16 v0, p2
34641     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34643     move-object/from16 v0, p2
34645     move-wide/from16 v1, v64
34647     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
34649     const-string v5, " kB"
34651     move-object/from16 v0, p2
34653     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34655     const-string v5, "           "
34657     move-object/from16 v0, p2
34659     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34661     move-object/from16 v0, p2
34663     move-wide/from16 v1, v70
34665     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
34667     const-string v5, " kB unshared; "
34669     move-object/from16 v0, p2
34671     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34673     move-object/from16 v0, p2
34675     move-wide/from16 v1, v74
34677     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
34679     const-string v5, " kB volatile"
34681     move-object/from16 v0, p2
34683     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34685     goto/16 :goto_30
34687     :cond_54b
34688     move-object/from16 v58, p2
34690     goto/16 :goto_465
34691 .end method
34693 .method dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
34694     .registers 29
34696     const/4 v9, 0x0
34698     const-string v3, "ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)"
34700     move-object/from16 v0, p2
34702     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34704     if-eqz p5, :cond_80
34706     move-object/from16 v0, p0
34708     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
34710     invoke-virtual {v3}, Ljava/util/HashMap;->size()I
34712     move-result v3
34714     if-lez v3, :cond_6a
34716     const/16 v19, 0x0
34718     move-object/from16 v0, p0
34720     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
34722     invoke-virtual {v3}, Ljava/util/HashMap;->values()Ljava/util/Collection;
34724     move-result-object v3
34726     invoke-interface {v3}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
34728     move-result-object v17
34730     :cond_22
34731     :goto_22
34732     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z
34734     move-result v3
34736     if-eqz v3, :cond_6a
34738     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object;
34740     move-result-object v21
34742     check-cast v21, Lcom/android/server/am/ReceiverList;
34744     if-eqz p6, :cond_46
34746     move-object/from16 v0, v21
34748     iget-object v3, v0, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
34750     if-eqz v3, :cond_22
34752     move-object/from16 v0, v21
34754     iget-object v3, v0, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
34756     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
34758     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
34760     move-object/from16 v0, p6
34762     invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
34764     move-result v3
34766     if-eqz v3, :cond_22
34768     :cond_46
34769     if-nez v19, :cond_52
34771     const-string v3, "  Registered Receivers:"
34773     move-object/from16 v0, p2
34775     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34777     const/4 v9, 0x1
34779     const/16 v19, 0x1
34781     :cond_52
34782     const-string v3, "  * "
34784     move-object/from16 v0, p2
34786     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34788     move-object/from16 v0, p2
34790     move-object/from16 v1, v21
34792     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
34794     const-string v3, "    "
34796     move-object/from16 v0, v21
34798     move-object/from16 v1, p2
34800     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ReceiverList;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
34802     goto :goto_22
34804     :cond_6a
34805     move-object/from16 v0, p0
34807     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
34809     if-eqz v9, :cond_a1
34811     const-string v4, "\n  Receiver Resolver Table:"
34813     :goto_72
34814     const-string v5, "    "
34816     const/4 v7, 0x0
34818     move-object/from16 v3, p2
34820     move-object/from16 v6, p6
34822     invoke-virtual/range {v2 .. v7}, Lcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z
34824     move-result v3
34826     if-eqz v3, :cond_80
34828     const/4 v9, 0x1
34830     :cond_80
34831     move-object/from16 v0, p0
34833     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
34835     array-length v0, v11
34837     move/from16 v18, v0
34839     const/4 v15, 0x0
34841     :goto_88
34842     move/from16 v0, v18
34844     if-ge v15, v0, :cond_a4
34846     aget-object v2, v11, v15
34848     move-object/from16 v3, p1
34850     move-object/from16 v4, p2
34852     move-object/from16 v5, p3
34854     move/from16 v6, p4
34856     move/from16 v7, p5
34858     move-object/from16 v8, p6
34860     invoke-virtual/range {v2 .. v9}, Lcom/android/server/am/BroadcastQueue;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;Z)Z
34862     move-result v9
34864     add-int/lit8 v15, v15, 0x1
34866     goto :goto_88
34868     :cond_a1
34869     const-string v4, "  Receiver Resolver Table:"
34871     goto :goto_72
34873     :cond_a4
34874     const/4 v9, 0x1
34876     move-object/from16 v0, p0
34878     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
34880     if-eqz v3, :cond_14c
34882     if-nez p6, :cond_14c
34884     if-eqz v9, :cond_b2
34886     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
34888     :cond_b2
34889     const/4 v9, 0x1
34891     const-string v3, "  Sticky broadcasts:"
34893     move-object/from16 v0, p2
34895     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34897     new-instance v4, Ljava/lang/StringBuilder;
34899     const/16 v3, 0x80
34901     invoke-direct {v4, v3}, Ljava/lang/StringBuilder;-><init>(I)V
34903     move-object/from16 v0, p0
34905     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
34907     invoke-virtual {v3}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
34909     move-result-object v3
34911     invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
34913     move-result-object v15
34915     :cond_cd
34916     :goto_cd
34917     invoke-interface {v15}, Ljava/util/Iterator;->hasNext()Z
34919     move-result v3
34921     if-eqz v3, :cond_14b
34923     invoke-interface {v15}, Ljava/util/Iterator;->next()Ljava/lang/Object;
34925     move-result-object v13
34927     check-cast v13, Ljava/util/Map$Entry;
34929     const-string v3, "  * Sticky action "
34931     move-object/from16 v0, p2
34933     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34935     invoke-interface {v13}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
34937     move-result-object v3
34939     check-cast v3, Ljava/lang/String;
34941     move-object/from16 v0, p2
34943     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34945     if-eqz p5, :cond_143
34947     const-string v3, ":"
34949     move-object/from16 v0, p2
34951     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34953     invoke-interface {v13}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
34955     move-result-object v16
34957     check-cast v16, Ljava/util/ArrayList;
34959     invoke-virtual/range {v16 .. v16}, Ljava/util/ArrayList;->size()I
34961     move-result v10
34963     const/4 v14, 0x0
34965     :goto_ff
34966     if-ge v14, v10, :cond_cd
34968     const/4 v3, 0x0
34970     invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->setLength(I)V
34972     const-string v3, "    Intent: "
34974     invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34976     move-object/from16 v0, v16
34978     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
34980     move-result-object v3
34982     check-cast v3, Landroid/content/Intent;
34984     const/4 v5, 0x0
34986     const/4 v6, 0x1
34988     const/4 v7, 0x0
34990     const/4 v8, 0x0
34992     invoke-virtual/range {v3 .. v8}, Landroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V
34994     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
34996     move-result-object v3
34998     move-object/from16 v0, p2
35000     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35002     move-object/from16 v0, v16
35004     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
35006     move-result-object v3
35008     check-cast v3, Landroid/content/Intent;
35010     invoke-virtual {v3}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle;
35012     move-result-object v12
35014     if-eqz v12, :cond_140
35016     const-string v3, "      "
35018     move-object/from16 v0, p2
35020     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35022     invoke-virtual {v12}, Landroid/os/Bundle;->toString()Ljava/lang/String;
35024     move-result-object v3
35026     move-object/from16 v0, p2
35028     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35030     :cond_140
35031     add-int/lit8 v14, v14, 0x1
35033     goto :goto_ff
35035     :cond_143
35036     const-string v3, ""
35038     move-object/from16 v0, p2
35040     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35042     goto :goto_cd
35044     :cond_14b
35045     const/4 v9, 0x1
35047     :cond_14c
35048     if-eqz p5, :cond_1a4
35050     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
35052     move-object/from16 v0, p0
35054     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
35056     array-length v0, v11
35058     move/from16 v18, v0
35060     const/4 v15, 0x0
35062     :goto_159
35063     move/from16 v0, v18
35065     if-ge v15, v0, :cond_18c
35067     aget-object v20, v11, v15
35069     new-instance v3, Ljava/lang/StringBuilder;
35071     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
35073     const-string v5, "  mBroadcastsScheduled ["
35075     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35077     move-result-object v3
35079     move-object/from16 v0, v20
35081     iget-object v5, v0, Lcom/android/server/am/BroadcastQueue;->mQueueName:Ljava/lang/String;
35083     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35085     move-result-object v3
35087     const-string v5, "]="
35089     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35091     move-result-object v3
35093     move-object/from16 v0, v20
35095     iget-boolean v5, v0, Lcom/android/server/am/BroadcastQueue;->mBroadcastsScheduled:Z
35097     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35099     move-result-object v3
35101     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35103     move-result-object v3
35105     move-object/from16 v0, p2
35107     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35109     add-int/lit8 v15, v15, 0x1
35111     goto :goto_159
35113     :cond_18c
35114     const-string v3, "  mHandler:"
35116     move-object/from16 v0, p2
35118     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35120     move-object/from16 v0, p0
35122     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
35124     new-instance v5, Landroid/util/PrintWriterPrinter;
35126     move-object/from16 v0, p2
35128     invoke-direct {v5, v0}, Landroid/util/PrintWriterPrinter;-><init>(Ljava/io/PrintWriter;)V
35130     const-string v6, "    "
35132     invoke-virtual {v3, v5, v6}, Landroid/os/Handler;->dump(Landroid/util/Printer;Ljava/lang/String;)V
35134     const/4 v9, 0x1
35136     :cond_1a4
35137     return v9
35138 .end method
35140 .method final dumpDbInfo(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
35141     .registers 11
35143     const/4 v5, 0x0
35145     invoke-virtual {p0, p2, v5, p3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
35147     move-result-object v2
35149     if-nez v2, :cond_8
35151     :cond_7
35152     return-void
35154     :cond_8
35155     const-string v5, "Applications Database Info:"
35157     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35159     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
35161     move-result v5
35163     add-int/lit8 v1, v5, -0x1
35165     :goto_13
35166     if-ltz v1, :cond_7
35168     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
35170     move-result-object v3
35172     check-cast v3, Lcom/android/server/am/ProcessRecord;
35174     iget-object v5, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35176     if-eqz v5, :cond_64
35178     new-instance v5, Ljava/lang/StringBuilder;
35180     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
35182     const-string v6, "\n** Database info for pid "
35184     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35186     move-result-object v5
35188     iget v6, v3, Lcom/android/server/am/ProcessRecord;->pid:I
35190     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35192     move-result-object v5
35194     const-string v6, " ["
35196     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35198     move-result-object v5
35200     iget-object v6, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
35202     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35204     move-result-object v5
35206     const-string v6, "] **"
35208     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35210     move-result-object v5
35212     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35214     move-result-object v5
35216     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35218     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35220     :try_start_4c
35221     new-instance v4, Lcom/android/server/am/TransferPipe;
35223     invoke-direct {v4}, Lcom/android/server/am/TransferPipe;-><init>()V
35224     :try_end_51
35225     .catch Ljava/io/IOException; {:try_start_4c .. :try_end_51} :catch_6c
35226     .catch Landroid/os/RemoteException; {:try_start_4c .. :try_end_51} :catch_87
35228     :try_start_51
35229     iget-object v5, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35231     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
35233     move-result-object v6
35235     invoke-virtual {v6}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
35237     move-result-object v6
35239     invoke-interface {v5, v6, p3}, Landroid/app/IApplicationThread;->dumpDbInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
35241     invoke-virtual {v4, p1}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
35242     :try_end_61
35243     .catchall {:try_start_51 .. :try_end_61} :catchall_67
35245     :try_start_61
35246     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->kill()V
35248     :cond_64
35249     :goto_64
35250     add-int/lit8 v1, v1, -0x1
35252     goto :goto_13
35254     :catchall_67
35255     move-exception v5
35257     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->kill()V
35259     throw v5
35260     :try_end_6c
35261     .catch Ljava/io/IOException; {:try_start_61 .. :try_end_6c} :catch_6c
35262     .catch Landroid/os/RemoteException; {:try_start_61 .. :try_end_6c} :catch_87
35264     :catch_6c
35265     move-exception v0
35267     new-instance v5, Ljava/lang/StringBuilder;
35269     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
35271     const-string v6, "Failure while dumping the app: "
35273     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35275     move-result-object v5
35277     invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35279     move-result-object v5
35281     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35283     move-result-object v5
35285     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35287     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35289     goto :goto_64
35291     :catch_87
35292     move-exception v0
35294     new-instance v5, Ljava/lang/StringBuilder;
35296     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
35298     const-string v6, "Got a RemoteException while dumping the app "
35300     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35302     move-result-object v5
35304     invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35306     move-result-object v5
35308     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35310     move-result-object v5
35312     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35314     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35316     goto :goto_64
35317 .end method
35319 .method final dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
35320     .registers 15
35322     const/4 v9, 0x0
35324     invoke-virtual {p0, p2, v9, p3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
35326     move-result-object v2
35328     if-nez v2, :cond_8
35330     :cond_7
35331     return-void
35333     :cond_8
35334     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
35336     move-result-wide v7
35338     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
35340     move-result-wide v4
35342     const-string v9, "Applications Graphics Acceleration Info:"
35344     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35346     new-instance v9, Ljava/lang/StringBuilder;
35348     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
35350     const-string v10, "Uptime: "
35352     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35354     move-result-object v9
35356     invoke-virtual {v9, v7, v8}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
35358     move-result-object v9
35360     const-string v10, " Realtime: "
35362     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35364     move-result-object v9
35366     invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
35368     move-result-object v9
35370     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35372     move-result-object v9
35374     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35376     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
35378     move-result v9
35380     add-int/lit8 v1, v9, -0x1
35382     :goto_3b
35383     if-ltz v1, :cond_7
35385     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
35387     move-result-object v3
35389     check-cast v3, Lcom/android/server/am/ProcessRecord;
35391     iget-object v9, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35393     if-eqz v9, :cond_8c
35395     new-instance v9, Ljava/lang/StringBuilder;
35397     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
35399     const-string v10, "\n** Graphics info for pid "
35401     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35403     move-result-object v9
35405     iget v10, v3, Lcom/android/server/am/ProcessRecord;->pid:I
35407     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35409     move-result-object v9
35411     const-string v10, " ["
35413     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35415     move-result-object v9
35417     iget-object v10, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
35419     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35421     move-result-object v9
35423     const-string v10, "] **"
35425     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35427     move-result-object v9
35429     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35431     move-result-object v9
35433     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35435     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35437     :try_start_74
35438     new-instance v6, Lcom/android/server/am/TransferPipe;
35440     invoke-direct {v6}, Lcom/android/server/am/TransferPipe;-><init>()V
35441     :try_end_79
35442     .catch Ljava/io/IOException; {:try_start_74 .. :try_end_79} :catch_94
35443     .catch Landroid/os/RemoteException; {:try_start_74 .. :try_end_79} :catch_af
35445     :try_start_79
35446     iget-object v9, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35448     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
35450     move-result-object v10
35452     invoke-virtual {v10}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
35454     move-result-object v10
35456     invoke-interface {v9, v10, p3}, Landroid/app/IApplicationThread;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
35458     invoke-virtual {v6, p1}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
35459     :try_end_89
35460     .catchall {:try_start_79 .. :try_end_89} :catchall_8f
35462     :try_start_89
35463     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->kill()V
35465     :cond_8c
35466     :goto_8c
35467     add-int/lit8 v1, v1, -0x1
35469     goto :goto_3b
35471     :catchall_8f
35472     move-exception v9
35474     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->kill()V
35476     throw v9
35477     :try_end_94
35478     .catch Ljava/io/IOException; {:try_start_89 .. :try_end_94} :catch_94
35479     .catch Landroid/os/RemoteException; {:try_start_89 .. :try_end_94} :catch_af
35481     :catch_94
35482     move-exception v0
35484     new-instance v9, Ljava/lang/StringBuilder;
35486     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
35488     const-string v10, "Failure while dumping the app: "
35490     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35492     move-result-object v9
35494     invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35496     move-result-object v9
35498     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35500     move-result-object v9
35502     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35504     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35506     goto :goto_8c
35508     :catch_af
35509     move-exception v0
35511     new-instance v9, Ljava/lang/StringBuilder;
35513     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
35515     const-string v10, "Got a RemoteException while dumping the app "
35517     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35519     move-result-object v9
35521     invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35523     move-result-object v9
35525     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35527     move-result-object v9
35529     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35531     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
35533     goto :goto_8c
35534 .end method
35536 .method public dumpHeap(Ljava/lang/String;ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z
35537     .registers 15
35538     .annotation system Ldalvik/annotation/Throws;
35539         value = {
35540             Landroid/os/RemoteException;
35541         }
35542     .end annotation
35544     :try_start_0
35545     monitor-enter p0
35546     :try_end_1
35547     .catchall {:try_start_0 .. :try_end_1} :catchall_1d
35548     .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_1} :catch_14
35550     :try_start_1
35551     const-string v7, "android.permission.SET_ACTIVITY_WATCHER"
35553     invoke-virtual {p0, v7}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
35555     move-result v7
35557     if-eqz v7, :cond_24
35559     new-instance v7, Ljava/lang/SecurityException;
35561     const-string v8, "Requires permission android.permission.SET_ACTIVITY_WATCHER"
35563     invoke-direct {v7, v8}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
35565     throw v7
35567     :catchall_11
35568     move-exception v7
35570     monitor-exit p0
35571     :try_end_13
35572     .catchall {:try_start_1 .. :try_end_13} :catchall_11
35574     :try_start_13
35575     throw v7
35576     :try_end_14
35577     .catchall {:try_start_13 .. :try_end_14} :catchall_1d
35578     .catch Landroid/os/RemoteException; {:try_start_13 .. :try_end_14} :catch_14
35580     :catch_14
35581     move-exception v2
35583     :try_start_15
35584     new-instance v7, Ljava/lang/IllegalStateException;
35586     const-string v8, "Process disappeared"
35588     invoke-direct {v7, v8}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
35590     throw v7
35591     :try_end_1d
35592     .catchall {:try_start_15 .. :try_end_1d} :catchall_1d
35594     :catchall_1d
35595     move-exception v7
35597     if-eqz p4, :cond_23
35599     :try_start_20
35600     invoke-virtual {p4}, Landroid/os/ParcelFileDescriptor;->close()V
35601     :try_end_23
35602     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_23} :catch_c1
35604     :cond_23
35605     :goto_23
35606     throw v7
35608     :cond_24
35609     if-nez p4, :cond_2e
35611     :try_start_26
35612     new-instance v7, Ljava/lang/IllegalArgumentException;
35614     const-string v8, "null fd"
35616     invoke-direct {v7, v8}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
35618     throw v7
35619     :try_end_2e
35620     .catchall {:try_start_26 .. :try_end_2e} :catchall_11
35622     :cond_2e
35623     const/4 v5, 0x0
35625     :try_start_2f
35626     invoke-static {p1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
35628     move-result v4
35630     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
35632     monitor-enter v8
35633     :try_end_36
35634     .catchall {:try_start_2f .. :try_end_36} :catchall_11
35635     .catch Ljava/lang/NumberFormatException; {:try_start_2f .. :try_end_36} :catch_80
35637     :try_start_36
35638     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
35640     invoke-virtual {v7, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
35642     move-result-object v7
35644     move-object v0, v7
35646     check-cast v0, Lcom/android/server/am/ProcessRecord;
35648     move-object v5, v0
35650     monitor-exit v8
35651     :try_end_41
35652     .catchall {:try_start_36 .. :try_end_41} :catchall_7d
35654     :goto_41
35655     if-nez v5, :cond_5e
35657     :try_start_43
35658     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
35660     invoke-virtual {v7}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
35662     move-result-object v1
35664     invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
35666     move-result-object v6
35668     check-cast v6, Landroid/util/SparseArray;
35670     if-eqz v6, :cond_5e
35672     invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
35674     move-result v7
35676     if-lez v7, :cond_5e
35678     const/4 v7, 0x0
35680     invoke-virtual {v6, v7}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
35682     move-result-object v5
35684     check-cast v5, Lcom/android/server/am/ProcessRecord;
35686     :cond_5e
35687     if-eqz v5, :cond_64
35689     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35691     if-nez v7, :cond_82
35693     :cond_64
35694     new-instance v7, Ljava/lang/IllegalArgumentException;
35696     new-instance v8, Ljava/lang/StringBuilder;
35698     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
35700     const-string v9, "Unknown process: "
35702     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35704     move-result-object v8
35706     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35708     move-result-object v8
35710     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35712     move-result-object v8
35714     invoke-direct {v7, v8}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
35716     throw v7
35717     :try_end_7d
35718     .catchall {:try_start_43 .. :try_end_7d} :catchall_11
35720     :catchall_7d
35721     move-exception v7
35723     :try_start_7e
35724     monitor-exit v8
35725     :try_end_7f
35726     .catchall {:try_start_7e .. :try_end_7f} :catchall_7d
35728     :try_start_7f
35729     throw v7
35730     :try_end_80
35731     .catchall {:try_start_7f .. :try_end_80} :catchall_11
35732     .catch Ljava/lang/NumberFormatException; {:try_start_7f .. :try_end_80} :catch_80
35734     :catch_80
35735     move-exception v7
35737     goto :goto_41
35739     :cond_82
35740     :try_start_82
35741     const-string v7, "1"
35743     const-string v8, "ro.debuggable"
35745     const-string v9, "0"
35747     invoke-static {v8, v9}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
35749     move-result-object v8
35751     invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
35753     move-result v3
35755     if-nez v3, :cond_b3
35757     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
35759     iget v7, v7, Landroid/content/pm/ApplicationInfo;->flags:I
35761     and-int/lit8 v7, v7, 0x2
35763     if-nez v7, :cond_b3
35765     new-instance v7, Ljava/lang/SecurityException;
35767     new-instance v8, Ljava/lang/StringBuilder;
35769     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
35771     const-string v9, "Process not debuggable: "
35773     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35775     move-result-object v8
35777     invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35779     move-result-object v8
35781     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35783     move-result-object v8
35785     invoke-direct {v7, v8}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
35787     throw v7
35789     :cond_b3
35790     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
35792     invoke-interface {v7, p2, p3, p4}, Landroid/app/IApplicationThread;->dumpHeap(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)V
35794     const/4 p4, 0x0
35796     const/4 v7, 0x1
35798     monitor-exit p0
35799     :try_end_bb
35800     .catchall {:try_start_82 .. :try_end_bb} :catchall_11
35802     if-eqz p4, :cond_c0
35804     :try_start_bd
35805     invoke-virtual {p4}, Landroid/os/ParcelFileDescriptor;->close()V
35806     :try_end_c0
35807     .catch Ljava/io/IOException; {:try_start_bd .. :try_end_c0} :catch_c4
35809     :cond_c0
35810     :goto_c0
35811     return v7
35813     :catch_c1
35814     move-exception v8
35816     goto/16 :goto_23
35818     :catch_c4
35819     move-exception v8
35821     goto :goto_c0
35822 .end method
35824 .method dumpOomLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZ)Z
35825     .registers 14
35827     const/4 v5, 0x0
35829     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
35831     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
35833     move-result v0
35835     if-lez v0, :cond_ad
35837     if-eqz v5, :cond_10
35839     const-string v0, " "
35841     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35843     :cond_10
35844     const/4 v5, 0x1
35846     const-string v0, "  OOM levels:"
35848     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35850     const-string v0, "    SYSTEM_ADJ: "
35852     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35854     const/16 v0, -0x10
35856     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35858     const-string v0, "    PERSISTENT_PROC_ADJ: "
35860     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35862     const/16 v0, -0xc
35864     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35866     const-string v0, "    FOREGROUND_APP_ADJ: "
35868     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35870     const/4 v0, 0x0
35872     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35874     const-string v0, "    VISIBLE_APP_ADJ: "
35876     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35878     const/4 v0, 0x1
35880     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35882     const-string v0, "    PERCEPTIBLE_APP_ADJ: "
35884     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35886     const/4 v0, 0x2
35888     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35890     const-string v0, "    HEAVY_WEIGHT_APP_ADJ: "
35892     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35894     const/4 v0, 0x3
35896     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35898     const-string v0, "    BACKUP_APP_ADJ: "
35900     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35902     const/4 v0, 0x4
35904     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35906     const-string v0, "    SERVICE_ADJ: "
35908     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35910     const/4 v0, 0x5
35912     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35914     const-string v0, "    HOME_APP_ADJ: "
35916     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35918     const/4 v0, 0x6
35920     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35922     const-string v0, "    PREVIOUS_APP_ADJ: "
35924     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35926     const/4 v0, 0x7
35928     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35930     const-string v0, "    SERVICE_B_ADJ: "
35932     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35934     const/16 v0, 0x8
35936     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35938     const-string v0, "    HIDDEN_APP_MIN_ADJ: "
35940     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35942     sget v0, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
35944     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35946     const-string v0, "    HIDDEN_APP_MAX_ADJ: "
35948     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35950     const/16 v0, 0xf
35952     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
35954     if-eqz v5, :cond_97
35956     const-string v0, " "
35958     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35960     :cond_97
35961     const/4 v5, 0x1
35963     const-string v0, "  Process OOM control:"
35965     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35967     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
35969     const-string v3, "    "
35971     const-string v4, "Proc"
35973     const-string v5, "PERS"
35975     const/4 v6, 0x1
35977     const/4 v7, 0x0
35979     move-object v0, p2
35981     move-object v1, p0
35983     invoke-static/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
35985     const/4 v5, 0x1
35987     :cond_ad
35988     const/4 v7, 0x0
35990     move-object v0, p0
35992     move-object v1, p1
35994     move-object v2, p2
35996     move-object v3, p3
35998     move v4, p4
36000     move v6, p5
36002     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
36004     move-result v5
36006     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
36008     new-instance v0, Ljava/lang/StringBuilder;
36010     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
36012     const-string v1, "  mHomeProcess: "
36014     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36016     move-result-object v0
36018     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
36020     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
36022     move-result-object v0
36024     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36026     move-result-object v0
36028     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36030     new-instance v0, Ljava/lang/StringBuilder;
36032     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
36034     const-string v1, "  mPreviousProcess: "
36036     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36038     move-result-object v0
36040     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
36042     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
36044     move-result-object v0
36046     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36048     move-result-object v0
36050     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36052     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
36054     if-eqz v0, :cond_107
36056     new-instance v0, Ljava/lang/StringBuilder;
36058     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
36060     const-string v1, "  mHeavyWeightProcess: "
36062     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36064     move-result-object v0
36066     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
36068     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
36070     move-result-object v0
36072     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36074     move-result-object v0
36076     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36078     :cond_107
36079     const/4 v0, 0x1
36081     return v0
36082 .end method
36084 .method dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
36085     .registers 13
36087     const/4 v1, 0x0
36089     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
36091     invoke-virtual {v5}, Ljava/util/HashMap;->size()I
36093     move-result v5
36095     if-lez v5, :cond_5d
36097     const/4 v2, 0x0
36099     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
36101     invoke-virtual {v5}, Ljava/util/HashMap;->values()Ljava/util/Collection;
36103     move-result-object v5
36105     invoke-interface {v5}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
36107     move-result-object v0
36109     :cond_14
36110     :goto_14
36111     invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
36113     move-result v5
36115     if-eqz v5, :cond_5d
36117     invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
36119     move-result-object v4
36121     check-cast v4, Ljava/lang/ref/WeakReference;
36123     if-eqz v4, :cond_52
36125     invoke-virtual {v4}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
36127     move-result-object v5
36129     check-cast v5, Lcom/android/server/am/PendingIntentRecord;
36131     move-object v3, v5
36133     :goto_29
36134     if-eqz p6, :cond_37
36136     if-eqz v3, :cond_14
36138     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
36140     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
36142     invoke-virtual {p6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36144     move-result v5
36146     if-eqz v5, :cond_14
36148     :cond_37
36149     if-nez v2, :cond_3f
36151     const-string v5, "ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)"
36153     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36155     const/4 v2, 0x1
36157     :cond_3f
36158     const/4 v1, 0x1
36160     if-eqz v3, :cond_54
36162     const-string v5, "  * "
36164     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36166     invoke-virtual {p2, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36168     if-eqz p5, :cond_14
36170     const-string v5, "    "
36172     invoke-virtual {v3, p2, v5}, Lcom/android/server/am/PendingIntentRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
36174     goto :goto_14
36176     :cond_52
36177     const/4 v3, 0x0
36179     goto :goto_29
36181     :cond_54
36182     const-string v5, "  * "
36184     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36186     invoke-virtual {p2, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36188     goto :goto_14
36190     :cond_5d
36191     return v1
36192 .end method
36194 .method dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
36195     .registers 37
36197     const/4 v7, 0x0
36199     const/16 v20, 0x0
36201     const-string v2, "ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)"
36203     move-object/from16 v0, p2
36205     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36207     if-eqz p5, :cond_96
36209     move-object/from16 v0, p0
36211     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
36213     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
36215     move-result-object v2
36217     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
36219     move-result-object v2
36221     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
36223     move-result-object v14
36225     :cond_1c
36226     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
36228     move-result v2
36230     if-eqz v2, :cond_96
36232     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
36234     move-result-object v24
36236     check-cast v24, Landroid/util/SparseArray;
36238     invoke-virtual/range {v24 .. v24}, Landroid/util/SparseArray;->size()I
36240     move-result v11
36242     const/4 v15, 0x0
36244     :goto_2d
36245     if-ge v15, v11, :cond_1c
36247     move-object/from16 v0, v24
36249     invoke-virtual {v0, v15}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36251     move-result-object v27
36253     check-cast v27, Lcom/android/server/am/ProcessRecord;
36255     if-eqz p6, :cond_4a
36257     move-object/from16 v0, v27
36259     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
36261     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
36263     move-object/from16 v0, p6
36265     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36267     move-result v2
36269     if-nez v2, :cond_4a
36271     :cond_47
36272     :goto_47
36273     add-int/lit8 v15, v15, 0x1
36275     goto :goto_2d
36277     :cond_4a
36278     if-nez v7, :cond_54
36280     const-string v2, "  All known processes:"
36282     move-object/from16 v0, p2
36284     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36286     const/4 v7, 0x1
36288     :cond_54
36289     move-object/from16 v0, v27
36291     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
36293     if-eqz v2, :cond_93
36295     const-string v2, "  *PERS*"
36297     :goto_5c
36298     move-object/from16 v0, p2
36300     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36302     const-string v2, " UID "
36304     move-object/from16 v0, p2
36306     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36308     move-object/from16 v0, v24
36310     invoke-virtual {v0, v15}, Landroid/util/SparseArray;->keyAt(I)I
36312     move-result v2
36314     move-object/from16 v0, p2
36316     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
36318     const-string v2, " "
36320     move-object/from16 v0, p2
36322     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36324     move-object/from16 v0, p2
36326     move-object/from16 v1, v27
36328     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36330     const-string v2, "    "
36332     move-object/from16 v0, v27
36334     move-object/from16 v1, p2
36336     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ProcessRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
36338     move-object/from16 v0, v27
36340     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
36342     if-eqz v2, :cond_47
36344     add-int/lit8 v20, v20, 0x1
36346     goto :goto_47
36348     :cond_93
36349     const-string v2, "  *APP*"
36351     goto :goto_5c
36353     :cond_96
36354     move-object/from16 v0, p0
36356     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
36358     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36360     move-result v2
36362     if-lez v2, :cond_fb
36364     if-eqz v7, :cond_a9
36366     const-string v2, " "
36368     move-object/from16 v0, p2
36370     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36372     :cond_a9
36373     const/4 v7, 0x1
36375     const-string v2, "  Isolated process list (sorted by uid):"
36377     move-object/from16 v0, p2
36379     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36381     const/4 v13, 0x0
36383     :goto_b2
36384     move-object/from16 v0, p0
36386     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
36388     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36390     move-result v2
36392     if-ge v13, v2, :cond_fb
36394     move-object/from16 v0, p0
36396     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
36398     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36400     move-result-object v27
36402     check-cast v27, Lcom/android/server/am/ProcessRecord;
36404     if-eqz p6, :cond_d9
36406     move-object/from16 v0, v27
36408     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
36410     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
36412     move-object/from16 v0, p6
36414     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36416     move-result v2
36418     if-nez v2, :cond_d9
36420     :goto_d6
36421     add-int/lit8 v13, v13, 0x1
36423     goto :goto_b2
36425     :cond_d9
36426     const-string v2, "%sIsolated #%2d: %s"
36428     const/4 v3, 0x3
36430     new-array v3, v3, [Ljava/lang/Object;
36432     const/4 v4, 0x0
36434     const-string v5, "    "
36436     aput-object v5, v3, v4
36438     const/4 v4, 0x1
36440     invoke-static {v13}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
36442     move-result-object v5
36444     aput-object v5, v3, v4
36446     const/4 v4, 0x2
36448     invoke-virtual/range {v27 .. v27}, Lcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
36450     move-result-object v5
36452     aput-object v5, v3, v4
36454     invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
36456     move-result-object v2
36458     move-object/from16 v0, p2
36460     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36462     goto :goto_d6
36464     :cond_fb
36465     move-object/from16 v0, p0
36467     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
36469     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
36471     move-result v2
36473     if-lez v2, :cond_12b
36475     if-eqz v7, :cond_10e
36477     const-string v2, " "
36479     move-object/from16 v0, p2
36481     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36483     :cond_10e
36484     const/4 v7, 0x1
36486     const-string v2, "  Process LRU list (sorted by oom_adj):"
36488     move-object/from16 v0, p2
36490     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36492     move-object/from16 v0, p0
36494     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
36496     const-string v5, "    "
36498     const-string v6, "Proc"
36500     const-string v7, "PERS"
36502     const/4 v8, 0x0
36504     move-object/from16 v2, p2
36506     move-object/from16 v3, p0
36508     move-object/from16 v9, p6
36510     invoke-static/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
36512     const/4 v7, 0x1
36514     :cond_12b
36515     if-eqz p5, :cond_19e
36517     move-object/from16 v0, p0
36519     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36521     monitor-enter v3
36523     const/16 v23, 0x0
36525     const/4 v13, 0x0
36527     :goto_135
36528     :try_start_135
36529     move-object/from16 v0, p0
36531     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36533     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36535     move-result v2
36537     if-ge v13, v2, :cond_19d
36539     move-object/from16 v0, p0
36541     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36543     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36545     move-result-object v27
36547     check-cast v27, Lcom/android/server/am/ProcessRecord;
36549     if-eqz p6, :cond_15c
36551     move-object/from16 v0, v27
36553     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
36555     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
36557     move-object/from16 v0, p6
36559     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36561     move-result v2
36563     if-nez v2, :cond_15c
36565     :goto_159
36566     add-int/lit8 v13, v13, 0x1
36568     goto :goto_135
36570     :cond_15c
36571     if-nez v23, :cond_171
36573     if-eqz v7, :cond_167
36575     const-string v2, " "
36577     move-object/from16 v0, p2
36579     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36581     :cond_167
36582     const/4 v7, 0x1
36584     const-string v2, "  PID mappings:"
36586     move-object/from16 v0, p2
36588     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36590     const/16 v23, 0x1
36592     :cond_171
36593     const-string v2, "    PID #"
36595     move-object/from16 v0, p2
36597     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36599     move-object/from16 v0, p0
36601     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36603     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->keyAt(I)I
36605     move-result v2
36607     move-object/from16 v0, p2
36609     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
36611     const-string v2, ": "
36613     move-object/from16 v0, p2
36615     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36617     move-object/from16 v0, p0
36619     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36621     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36623     move-result-object v2
36625     move-object/from16 v0, p2
36627     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36629     goto :goto_159
36631     :catchall_19a
36632     move-exception v2
36634     monitor-exit v3
36635     :try_end_19c
36636     .catchall {:try_start_135 .. :try_end_19c} :catchall_19a
36638     throw v2
36640     :cond_19d
36641     :try_start_19d
36642     monitor-exit v3
36643     :try_end_19e
36644     .catchall {:try_start_19d .. :try_end_19e} :catchall_19a
36646     :cond_19e
36647     move-object/from16 v0, p0
36649     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
36651     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36653     move-result v2
36655     if-lez v2, :cond_227
36657     move-object/from16 v0, p0
36659     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36661     monitor-enter v3
36663     const/16 v23, 0x0
36665     const/4 v13, 0x0
36667     :goto_1b0
36668     :try_start_1b0
36669     move-object/from16 v0, p0
36671     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
36673     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36675     move-result v2
36677     if-ge v13, v2, :cond_226
36679     move-object/from16 v0, p0
36681     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
36683     move-object/from16 v0, p0
36685     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
36687     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36689     move-result-object v2
36691     check-cast v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
36693     iget v2, v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
36695     invoke-virtual {v4, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
36697     move-result-object v27
36699     check-cast v27, Lcom/android/server/am/ProcessRecord;
36701     if-eqz p6, :cond_1e5
36703     if-eqz v27, :cond_1e2
36705     move-object/from16 v0, v27
36707     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
36709     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
36711     move-object/from16 v0, p6
36713     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36715     move-result v2
36717     if-nez v2, :cond_1e5
36719     :cond_1e2
36720     :goto_1e2
36721     add-int/lit8 v13, v13, 0x1
36723     goto :goto_1b0
36725     :cond_1e5
36726     if-nez v23, :cond_1fa
36728     if-eqz v7, :cond_1f0
36730     const-string v2, " "
36732     move-object/from16 v0, p2
36734     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36736     :cond_1f0
36737     const/4 v7, 0x1
36739     const-string v2, "  Foreground Processes:"
36741     move-object/from16 v0, p2
36743     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36745     const/16 v23, 0x1
36747     :cond_1fa
36748     const-string v2, "    PID #"
36750     move-object/from16 v0, p2
36752     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36754     move-object/from16 v0, p0
36756     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
36758     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->keyAt(I)I
36760     move-result v2
36762     move-object/from16 v0, p2
36764     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
36766     const-string v2, ": "
36768     move-object/from16 v0, p2
36770     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36772     move-object/from16 v0, p0
36774     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
36776     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36778     move-result-object v2
36780     move-object/from16 v0, p2
36782     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36784     goto :goto_1e2
36786     :catchall_223
36787     move-exception v2
36789     monitor-exit v3
36790     :try_end_225
36791     .catchall {:try_start_1b0 .. :try_end_225} :catchall_223
36793     throw v2
36795     :cond_226
36796     :try_start_226
36797     monitor-exit v3
36798     :try_end_227
36799     .catchall {:try_start_226 .. :try_end_227} :catchall_223
36801     :cond_227
36802     move-object/from16 v0, p0
36804     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
36806     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
36808     move-result v2
36810     if-lez v2, :cond_258
36812     if-eqz v7, :cond_23a
36814     const-string v2, " "
36816     move-object/from16 v0, p2
36818     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36820     :cond_23a
36821     const/16 v17, 0x1
36823     const-string v2, "  Persisent processes that are starting:"
36825     move-object/from16 v0, p2
36827     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36829     move-object/from16 v0, p0
36831     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
36833     const-string v5, "    "
36835     const-string v6, "Starting Norm"
36837     const-string v7, "Restarting PERS"
36839     move-object/from16 v2, p2
36841     move-object/from16 v3, p0
36843     move-object/from16 v8, p6
36845     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
36847     move/from16 v7, v17
36849     :cond_258
36850     move-object/from16 v0, p0
36852     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
36854     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
36856     move-result v2
36858     if-lez v2, :cond_289
36860     if-eqz v7, :cond_26b
36862     const-string v2, " "
36864     move-object/from16 v0, p2
36866     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36868     :cond_26b
36869     const/16 v17, 0x1
36871     const-string v2, "  Processes that are being removed:"
36873     move-object/from16 v0, p2
36875     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36877     move-object/from16 v0, p0
36879     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
36881     const-string v5, "    "
36883     const-string v6, "Removed Norm"
36885     const-string v7, "Removed PERS"
36887     move-object/from16 v2, p2
36889     move-object/from16 v3, p0
36891     move-object/from16 v8, p6
36893     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
36895     move/from16 v7, v17
36897     :cond_289
36898     move-object/from16 v0, p0
36900     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
36902     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
36904     move-result v2
36906     if-lez v2, :cond_2ba
36908     if-eqz v7, :cond_29c
36910     const-string v2, " "
36912     move-object/from16 v0, p2
36914     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36916     :cond_29c
36917     const/16 v17, 0x1
36919     const-string v2, "  Processes that are on old until the system is ready:"
36921     move-object/from16 v0, p2
36923     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36925     move-object/from16 v0, p0
36927     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
36929     const-string v5, "    "
36931     const-string v6, "OnHold Norm"
36933     const-string v7, "OnHold PERS"
36935     move-object/from16 v2, p2
36937     move-object/from16 v3, p0
36939     move-object/from16 v8, p6
36941     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
36943     move/from16 v7, v17
36945     :cond_2ba
36946     move-object/from16 v2, p0
36948     move-object/from16 v3, p1
36950     move-object/from16 v4, p2
36952     move-object/from16 v5, p3
36954     move/from16 v6, p4
36956     move/from16 v8, p5
36958     move-object/from16 v9, p6
36960     invoke-virtual/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
36962     move-result v7
36964     move-object/from16 v0, p0
36966     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
36968     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
36970     move-result-object v2
36972     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
36974     move-result v2
36976     if-lez v2, :cond_38b
36978     const/16 v23, 0x0
36980     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
36982     move-result-wide v18
36984     move-object/from16 v0, p0
36986     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
36988     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
36990     move-result-object v2
36992     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
36994     move-result-object v2
36996     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
36998     move-result-object v14
37000     :cond_2f0
37001     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
37003     move-result v2
37005     if-eqz v2, :cond_38b
37007     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
37009     move-result-object v25
37011     check-cast v25, Ljava/util/Map$Entry;
37013     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
37015     move-result-object v22
37017     check-cast v22, Ljava/lang/String;
37019     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
37021     move-result-object v29
37023     check-cast v29, Landroid/util/SparseArray;
37025     invoke-virtual/range {v29 .. v29}, Landroid/util/SparseArray;->size()I
37027     move-result v10
37029     const/4 v13, 0x0
37031     :goto_30d
37032     if-ge v13, v10, :cond_2f0
37034     move-object/from16 v0, v29
37036     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->keyAt(I)I
37038     move-result v26
37040     move-object/from16 v0, p0
37042     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
37044     move-object/from16 v0, v22
37046     move/from16 v1, v26
37048     invoke-virtual {v2, v0, v1}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
37050     move-result-object v27
37052     check-cast v27, Lcom/android/server/am/ProcessRecord;
37054     if-eqz p6, :cond_338
37056     if-eqz v27, :cond_335
37058     move-object/from16 v0, v27
37060     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
37062     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
37064     move-object/from16 v0, p6
37066     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
37068     move-result v2
37070     if-nez v2, :cond_338
37072     :cond_335
37073     :goto_335
37074     add-int/lit8 v13, v13, 0x1
37076     goto :goto_30d
37078     :cond_338
37079     if-nez v23, :cond_34d
37081     if-eqz v7, :cond_343
37083     const-string v2, " "
37085     move-object/from16 v0, p2
37087     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37089     :cond_343
37090     const/4 v7, 0x1
37092     const-string v2, "  Time since processes crashed:"
37094     move-object/from16 v0, p2
37096     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37098     const/16 v23, 0x1
37100     :cond_34d
37101     const-string v2, "    Process "
37103     move-object/from16 v0, p2
37105     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37107     move-object/from16 v0, p2
37109     move-object/from16 v1, v22
37111     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37113     const-string v2, " uid "
37115     move-object/from16 v0, p2
37117     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37119     move-object/from16 v0, p2
37121     move/from16 v1, v26
37123     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
37125     const-string v2, ": last crashed "
37127     move-object/from16 v0, p2
37129     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37131     move-object/from16 v0, v29
37133     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
37135     move-result-object v2
37137     check-cast v2, Ljava/lang/Long;
37139     invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
37141     move-result-wide v2
37143     sub-long v2, v18, v2
37145     move-object/from16 v0, p2
37147     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
37149     const-string v2, " ago"
37151     move-object/from16 v0, p2
37153     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37155     goto :goto_335
37157     :cond_38b
37158     move-object/from16 v0, p0
37160     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
37162     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
37164     move-result-object v2
37166     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
37168     move-result v2
37170     if-lez v2, :cond_435
37172     const/16 v23, 0x0
37174     move-object/from16 v0, p0
37176     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
37178     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
37180     move-result-object v2
37182     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
37184     move-result-object v2
37186     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
37188     move-result-object v14
37190     :cond_3ab
37191     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
37193     move-result v2
37195     if-eqz v2, :cond_435
37197     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
37199     move-result-object v25
37201     check-cast v25, Ljava/util/Map$Entry;
37203     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
37205     move-result-object v22
37207     check-cast v22, Ljava/lang/String;
37209     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
37211     move-result-object v29
37213     check-cast v29, Landroid/util/SparseArray;
37215     invoke-virtual/range {v29 .. v29}, Landroid/util/SparseArray;->size()I
37217     move-result v10
37219     const/4 v13, 0x0
37221     :goto_3c8
37222     if-ge v13, v10, :cond_3ab
37224     move-object/from16 v0, v29
37226     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->keyAt(I)I
37228     move-result v26
37230     move-object/from16 v0, p0
37232     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
37234     move-object/from16 v0, v22
37236     move/from16 v1, v26
37238     invoke-virtual {v2, v0, v1}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
37240     move-result-object v27
37242     check-cast v27, Lcom/android/server/am/ProcessRecord;
37244     if-eqz p6, :cond_3f3
37246     if-eqz v27, :cond_3f0
37248     move-object/from16 v0, v27
37250     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
37252     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
37254     move-object/from16 v0, p6
37256     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
37258     move-result v2
37260     if-nez v2, :cond_3f3
37262     :cond_3f0
37263     :goto_3f0
37264     add-int/lit8 v13, v13, 0x1
37266     goto :goto_3c8
37268     :cond_3f3
37269     if-nez v23, :cond_406
37271     if-eqz v7, :cond_3fe
37273     const-string v2, " "
37275     move-object/from16 v0, p2
37277     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37279     :cond_3fe
37280     const/4 v7, 0x1
37282     const-string v2, "  Bad processes:"
37284     move-object/from16 v0, p2
37286     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37288     :cond_406
37289     const-string v2, "    Bad process "
37291     move-object/from16 v0, p2
37293     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37295     move-object/from16 v0, p2
37297     move-object/from16 v1, v22
37299     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37301     const-string v2, " uid "
37303     move-object/from16 v0, p2
37305     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37307     move-object/from16 v0, p2
37309     move/from16 v1, v26
37311     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
37313     const-string v2, ": crashed at time "
37315     move-object/from16 v0, p2
37317     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37319     move-object/from16 v0, v29
37321     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
37323     move-result-object v2
37325     move-object/from16 v0, p2
37327     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
37329     goto :goto_3f0
37331     :cond_435
37332     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
37334     new-instance v2, Ljava/lang/StringBuilder;
37336     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37338     const-string v3, "  mHomeProcess: "
37340     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37342     move-result-object v2
37344     move-object/from16 v0, p0
37346     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
37348     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37350     move-result-object v2
37352     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37354     move-result-object v2
37356     move-object/from16 v0, p2
37358     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37360     new-instance v2, Ljava/lang/StringBuilder;
37362     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37364     const-string v3, "  mPreviousProcess: "
37366     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37368     move-result-object v2
37370     move-object/from16 v0, p0
37372     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
37374     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37376     move-result-object v2
37378     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37380     move-result-object v2
37382     move-object/from16 v0, p2
37384     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37386     if-eqz p5, :cond_492
37388     new-instance v28, Ljava/lang/StringBuilder;
37390     const/16 v2, 0x80
37392     move-object/from16 v0, v28
37394     invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(I)V
37396     const-string v2, "  mPreviousProcessVisibleTime: "
37398     move-object/from16 v0, v28
37400     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37402     move-object/from16 v0, p0
37404     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcessVisibleTime:J
37406     move-object/from16 v0, v28
37408     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/lang/StringBuilder;)V
37410     move-object/from16 v0, p2
37412     move-object/from16 v1, v28
37414     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
37416     :cond_492
37417     move-object/from16 v0, p0
37419     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37421     if-eqz v2, :cond_4b4
37423     new-instance v2, Ljava/lang/StringBuilder;
37425     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37427     const-string v3, "  mHeavyWeightProcess: "
37429     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37431     move-result-object v2
37433     move-object/from16 v0, p0
37435     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37437     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37439     move-result-object v2
37441     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37443     move-result-object v2
37445     move-object/from16 v0, p2
37447     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37449     :cond_4b4
37450     new-instance v2, Ljava/lang/StringBuilder;
37452     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37454     const-string v3, "  mConfiguration: "
37456     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37458     move-result-object v2
37460     move-object/from16 v0, p0
37462     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
37464     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37466     move-result-object v2
37468     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37470     move-result-object v2
37472     move-object/from16 v0, p2
37474     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37476     if-eqz p5, :cond_563
37478     new-instance v2, Ljava/lang/StringBuilder;
37480     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37482     const-string v3, "  mConfigWillChange: "
37484     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37486     move-result-object v2
37488     move-object/from16 v0, p0
37490     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
37492     iget-boolean v3, v3, Lcom/android/server/am/ActivityStack;->mConfigWillChange:Z
37494     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37496     move-result-object v2
37498     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37500     move-result-object v2
37502     move-object/from16 v0, p2
37504     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37506     move-object/from16 v0, p0
37508     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
37510     invoke-virtual {v2}, Lcom/android/server/am/CompatModePackages;->getPackages()Ljava/util/HashMap;
37512     move-result-object v2
37514     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
37516     move-result v2
37518     if-lez v2, :cond_563
37520     const/16 v23, 0x0
37522     move-object/from16 v0, p0
37524     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
37526     invoke-virtual {v2}, Lcom/android/server/am/CompatModePackages;->getPackages()Ljava/util/HashMap;
37528     move-result-object v2
37530     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
37532     move-result-object v2
37534     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
37536     move-result-object v14
37538     :cond_510
37539     :goto_510
37540     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
37542     move-result v2
37544     if-eqz v2, :cond_563
37546     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
37548     move-result-object v12
37550     check-cast v12, Ljava/util/Map$Entry;
37552     invoke-interface {v12}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
37554     move-result-object v21
37556     check-cast v21, Ljava/lang/String;
37558     invoke-interface {v12}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
37560     move-result-object v2
37562     check-cast v2, Ljava/lang/Integer;
37564     invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
37566     move-result v16
37568     if-eqz p6, :cond_538
37570     move-object/from16 v0, p6
37572     move-object/from16 v1, v21
37574     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
37576     move-result v2
37578     if-eqz v2, :cond_510
37580     :cond_538
37581     if-nez v23, :cond_543
37583     const-string v2, "  mScreenCompatPackages:"
37585     move-object/from16 v0, p2
37587     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37589     const/16 v23, 0x1
37591     :cond_543
37592     const-string v2, "    "
37594     move-object/from16 v0, p2
37596     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37598     move-object/from16 v0, p2
37600     move-object/from16 v1, v21
37602     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37604     const-string v2, ": "
37606     move-object/from16 v0, p2
37608     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
37610     move-object/from16 v0, p2
37612     move/from16 v1, v16
37614     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
37616     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
37618     goto :goto_510
37620     :cond_563
37621     move-object/from16 v0, p0
37623     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
37625     if-nez v2, :cond_575
37627     move-object/from16 v0, p0
37629     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
37631     if-nez v2, :cond_575
37633     move-object/from16 v0, p0
37635     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
37637     if-eqz v2, :cond_5ad
37639     :cond_575
37640     new-instance v2, Ljava/lang/StringBuilder;
37642     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37644     const-string v3, "  mSleeping="
37646     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37648     move-result-object v2
37650     move-object/from16 v0, p0
37652     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
37654     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37656     move-result-object v2
37658     const-string v3, " mWentToSleep="
37660     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37662     move-result-object v2
37664     move-object/from16 v0, p0
37666     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
37668     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37670     move-result-object v2
37672     const-string v3, " mLockScreenShown "
37674     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37676     move-result-object v2
37678     move-object/from16 v0, p0
37680     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
37682     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37684     move-result-object v2
37686     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37688     move-result-object v2
37690     move-object/from16 v0, p2
37692     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37694     :cond_5ad
37695     move-object/from16 v0, p0
37697     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
37699     if-eqz v2, :cond_5cf
37701     new-instance v2, Ljava/lang/StringBuilder;
37703     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37705     const-string v3, "  mShuttingDown="
37707     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37709     move-result-object v2
37711     move-object/from16 v0, p0
37713     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
37715     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37717     move-result-object v2
37719     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37721     move-result-object v2
37723     move-object/from16 v0, p2
37725     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37727     :cond_5cf
37728     move-object/from16 v0, p0
37730     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
37732     if-nez v2, :cond_5e7
37734     move-object/from16 v0, p0
37736     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
37738     if-nez v2, :cond_5e7
37740     move-object/from16 v0, p0
37742     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
37744     if-nez v2, :cond_5e7
37746     move-object/from16 v0, p0
37748     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
37750     if-eqz v2, :cond_62d
37752     :cond_5e7
37753     new-instance v2, Ljava/lang/StringBuilder;
37755     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37757     const-string v3, "  mDebugApp="
37759     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37761     move-result-object v2
37763     move-object/from16 v0, p0
37765     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
37767     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37769     move-result-object v2
37771     const-string v3, "/orig="
37773     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37775     move-result-object v2
37777     move-object/from16 v0, p0
37779     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
37781     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37783     move-result-object v2
37785     const-string v3, " mDebugTransient="
37787     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37789     move-result-object v2
37791     move-object/from16 v0, p0
37793     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
37795     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37797     move-result-object v2
37799     const-string v3, " mOrigWaitForDebugger="
37801     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37803     move-result-object v2
37805     move-object/from16 v0, p0
37807     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
37809     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37811     move-result-object v2
37813     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37815     move-result-object v2
37817     move-object/from16 v0, p2
37819     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37821     :cond_62d
37822     move-object/from16 v0, p0
37824     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
37826     if-eqz v2, :cond_64f
37828     new-instance v2, Ljava/lang/StringBuilder;
37830     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37832     const-string v3, "  mOpenGlTraceApp="
37834     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37836     move-result-object v2
37838     move-object/from16 v0, p0
37840     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
37842     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37844     move-result-object v2
37846     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37848     move-result-object v2
37850     move-object/from16 v0, p2
37852     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37854     :cond_64f
37855     move-object/from16 v0, p0
37857     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
37859     if-nez v2, :cond_667
37861     move-object/from16 v0, p0
37863     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
37865     if-nez v2, :cond_667
37867     move-object/from16 v0, p0
37869     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
37871     if-nez v2, :cond_667
37873     move-object/from16 v0, p0
37875     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
37877     if-eqz v2, :cond_6e5
37879     :cond_667
37880     new-instance v2, Ljava/lang/StringBuilder;
37882     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37884     const-string v3, "  mProfileApp="
37886     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37888     move-result-object v2
37890     move-object/from16 v0, p0
37892     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
37894     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37896     move-result-object v2
37898     const-string v3, " mProfileProc="
37900     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37902     move-result-object v2
37904     move-object/from16 v0, p0
37906     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
37908     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37910     move-result-object v2
37912     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37914     move-result-object v2
37916     move-object/from16 v0, p2
37918     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37920     new-instance v2, Ljava/lang/StringBuilder;
37922     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37924     const-string v3, "  mProfileFile="
37926     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37928     move-result-object v2
37930     move-object/from16 v0, p0
37932     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
37934     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37936     move-result-object v2
37938     const-string v3, " mProfileFd="
37940     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37942     move-result-object v2
37944     move-object/from16 v0, p0
37946     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
37948     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37950     move-result-object v2
37952     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37954     move-result-object v2
37956     move-object/from16 v0, p2
37958     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
37960     new-instance v2, Ljava/lang/StringBuilder;
37962     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
37964     const-string v3, "  mProfileType="
37966     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37968     move-result-object v2
37970     move-object/from16 v0, p0
37972     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
37974     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
37976     move-result-object v2
37978     const-string v3, " mAutoStopProfiler="
37980     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37982     move-result-object v2
37984     move-object/from16 v0, p0
37986     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
37988     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
37990     move-result-object v2
37992     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37994     move-result-object v2
37996     move-object/from16 v0, p2
37998     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38000     :cond_6e5
38001     move-object/from16 v0, p0
38003     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
38005     if-nez v2, :cond_6f1
38007     move-object/from16 v0, p0
38009     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
38011     if-eqz v2, :cond_71b
38013     :cond_6f1
38014     new-instance v2, Ljava/lang/StringBuilder;
38016     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38018     const-string v3, "  mAlwaysFinishActivities="
38020     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38022     move-result-object v2
38024     move-object/from16 v0, p0
38026     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
38028     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38030     move-result-object v2
38032     const-string v3, " mController="
38034     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38036     move-result-object v2
38038     move-object/from16 v0, p0
38040     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
38042     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
38044     move-result-object v2
38046     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38048     move-result-object v2
38050     move-object/from16 v0, p2
38052     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38054     :cond_71b
38055     if-eqz p5, :cond_865
38057     new-instance v2, Ljava/lang/StringBuilder;
38059     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38061     const-string v3, "  Total persistent processes: "
38063     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38065     move-result-object v2
38067     move/from16 v0, v20
38069     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38071     move-result-object v2
38073     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38075     move-result-object v2
38077     move-object/from16 v0, p2
38079     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38081     new-instance v2, Ljava/lang/StringBuilder;
38083     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38085     const-string v3, "  mStartRunning="
38087     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38089     move-result-object v2
38091     move-object/from16 v0, p0
38093     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
38095     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38097     move-result-object v2
38099     const-string v3, " mProcessesReady="
38101     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38103     move-result-object v2
38105     move-object/from16 v0, p0
38107     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
38109     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38111     move-result-object v2
38113     const-string v3, " mSystemReady="
38115     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38117     move-result-object v2
38119     move-object/from16 v0, p0
38121     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
38123     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38125     move-result-object v2
38127     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38129     move-result-object v2
38131     move-object/from16 v0, p2
38133     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38135     new-instance v2, Ljava/lang/StringBuilder;
38137     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38139     const-string v3, "  mBooting="
38141     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38143     move-result-object v2
38145     move-object/from16 v0, p0
38147     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
38149     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38151     move-result-object v2
38153     const-string v3, " mBooted="
38155     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38157     move-result-object v2
38159     move-object/from16 v0, p0
38161     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
38163     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
38165     move-result-object v2
38167     const-string v3, " mFactoryTest="
38169     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38171     move-result-object v2
38173     move-object/from16 v0, p0
38175     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
38177     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38179     move-result-object v2
38181     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38183     move-result-object v2
38185     move-object/from16 v0, p2
38187     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38189     const-string v2, "  mLastPowerCheckRealtime="
38191     move-object/from16 v0, p2
38193     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38195     move-object/from16 v0, p0
38197     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
38199     move-object/from16 v0, p2
38201     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
38203     const-string v2, ""
38205     move-object/from16 v0, p2
38207     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38209     const-string v2, "  mLastPowerCheckUptime="
38211     move-object/from16 v0, p2
38213     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38215     move-object/from16 v0, p0
38217     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
38219     move-object/from16 v0, p2
38221     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
38223     const-string v2, ""
38225     move-object/from16 v0, p2
38227     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38229     new-instance v2, Ljava/lang/StringBuilder;
38231     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38233     const-string v3, "  mGoingToSleep="
38235     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38237     move-result-object v2
38239     move-object/from16 v0, p0
38241     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
38243     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mGoingToSleep:Landroid/os/PowerManager$WakeLock;
38245     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
38247     move-result-object v2
38249     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38251     move-result-object v2
38253     move-object/from16 v0, p2
38255     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38257     new-instance v2, Ljava/lang/StringBuilder;
38259     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38261     const-string v3, "  mLaunchingActivity="
38263     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38265     move-result-object v2
38267     move-object/from16 v0, p0
38269     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
38271     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mLaunchingActivity:Landroid/os/PowerManager$WakeLock;
38273     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
38275     move-result-object v2
38277     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38279     move-result-object v2
38281     move-object/from16 v0, p2
38283     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38285     new-instance v2, Ljava/lang/StringBuilder;
38287     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38289     const-string v3, "  mAdjSeq="
38291     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38293     move-result-object v2
38295     move-object/from16 v0, p0
38297     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
38299     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38301     move-result-object v2
38303     const-string v3, " mLruSeq="
38305     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38307     move-result-object v2
38309     move-object/from16 v0, p0
38311     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
38313     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38315     move-result-object v2
38317     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38319     move-result-object v2
38321     move-object/from16 v0, p2
38323     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38325     new-instance v2, Ljava/lang/StringBuilder;
38327     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
38329     const-string v3, "  mNumServiceProcs="
38331     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38333     move-result-object v2
38335     move-object/from16 v0, p0
38337     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
38339     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38341     move-result-object v2
38343     const-string v3, " mNewNumServiceProcs="
38345     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38347     move-result-object v2
38349     move-object/from16 v0, p0
38351     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
38353     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38355     move-result-object v2
38357     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38359     move-result-object v2
38361     move-object/from16 v0, p2
38363     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38365     :cond_865
38366     const/4 v2, 0x1
38368     return v2
38369 .end method
38371 .method dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
38372     .registers 15
38374     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
38376     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
38378     move-result v5
38380     if-lez v5, :cond_6d
38382     const/4 v3, 0x0
38384     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
38386     move-result-wide v1
38388     const/4 v0, 0x0
38390     :goto_e
38391     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
38393     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
38395     move-result v5
38397     if-ge v0, v5, :cond_6d
38399     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
38401     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
38403     move-result-object v4
38405     check-cast v4, Lcom/android/server/am/ProcessRecord;
38407     if-eqz p7, :cond_2d
38409     iget-object v5, v4, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
38411     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
38413     invoke-virtual {p7, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
38415     move-result v5
38417     if-nez v5, :cond_2d
38419     :goto_2a
38420     add-int/lit8 v0, v0, 0x1
38422     goto :goto_e
38424     :cond_2d
38425     if-nez v3, :cond_3d
38427     if-eqz p5, :cond_36
38429     const-string v5, " "
38431     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38433     :cond_36
38434     const/4 p5, 0x1
38436     const-string v5, "  Processes that are waiting to GC:"
38438     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38440     const/4 v3, 0x1
38442     :cond_3d
38443     const-string v5, "    Process "
38445     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38447     invoke-virtual {p2, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
38449     const-string v5, "      lowMem="
38451     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38453     iget-boolean v5, v4, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
38455     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Z)V
38457     const-string v5, ", last gced="
38459     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38461     iget-wide v5, v4, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
38463     sub-long v5, v1, v5
38465     invoke-virtual {p2, v5, v6}, Ljava/io/PrintWriter;->print(J)V
38467     const-string v5, " ms ago, last lowMem="
38469     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38471     iget-wide v5, v4, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
38473     sub-long v5, v1, v5
38475     invoke-virtual {p2, v5, v6}, Ljava/io/PrintWriter;->print(J)V
38477     const-string v5, " ms ago"
38479     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38481     goto :goto_2a
38483     :cond_6d
38484     return p5
38485 .end method
38487 .method protected dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
38488     .registers 14
38490     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
38492     move-object v1, p1
38494     move-object v2, p2
38496     move-object v3, p3
38498     move-object v4, p4
38500     move v5, p5
38502     move v6, p6
38504     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ProviderMap;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
38506     move-result v0
38508     return v0
38509 .end method
38511 .method dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
38512     .registers 18
38514     const/4 v4, 0x1
38516     new-instance v3, Lcom/android/server/am/ActivityManagerService$ItemMatcher;
38518     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
38520     invoke-virtual {v3, p3, p4}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->build([Ljava/lang/String;I)I
38522     const-string v10, "ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)"
38524     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38526     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
38528     move/from16 v0, p5
38530     invoke-virtual {v10, p2, v0}, Lcom/android/server/am/ProviderMap;->dumpProvidersLocked(Ljava/io/PrintWriter;Z)V
38532     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
38534     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
38536     move-result v10
38538     if-lez v10, :cond_64
38540     const/4 v7, 0x0
38542     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
38544     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
38546     move-result v10
38548     add-int/lit8 v1, v10, -0x1
38550     :goto_26
38551     if-ltz v1, :cond_64
38553     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
38555     invoke-virtual {v10, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
38557     move-result-object v8
38559     check-cast v8, Lcom/android/server/am/ContentProviderRecord;
38561     if-eqz p6, :cond_43
38563     iget-object v10, v8, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
38565     invoke-virtual {v10}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
38567     move-result-object v10
38569     move-object/from16 v0, p6
38571     invoke-virtual {v0, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
38573     move-result v10
38575     if-nez v10, :cond_43
38577     :goto_40
38578     add-int/lit8 v1, v1, -0x1
38580     goto :goto_26
38582     :cond_43
38583     if-nez v7, :cond_53
38585     if-eqz v4, :cond_4c
38587     const-string v10, " "
38589     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38591     :cond_4c
38592     const/4 v4, 0x1
38594     const-string v10, "  Launching content providers:"
38596     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38598     const/4 v7, 0x1
38600     :cond_53
38601     const-string v10, "  Launching #"
38603     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38605     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(I)V
38607     const-string v10, ": "
38609     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38611     invoke-virtual {p2, v8}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
38613     goto :goto_40
38615     :cond_64
38616     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
38618     invoke-virtual {v10}, Landroid/util/SparseArray;->size()I
38620     move-result v10
38622     if-lez v10, :cond_c3
38624     if-eqz v4, :cond_71
38626     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
38628     :cond_71
38629     const/4 v4, 0x1
38631     const-string v10, "Granted Uri Permissions:"
38633     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38635     const/4 v1, 0x0
38637     :goto_78
38638     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
38640     invoke-virtual {v10}, Landroid/util/SparseArray;->size()I
38642     move-result v10
38644     if-ge v1, v10, :cond_c2
38646     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
38648     invoke-virtual {v10, v1}, Landroid/util/SparseArray;->keyAt(I)I
38650     move-result v9
38652     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
38654     invoke-virtual {v10, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
38656     move-result-object v6
38658     check-cast v6, Ljava/util/HashMap;
38660     const-string v10, "  * UID "
38662     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38664     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->print(I)V
38666     const-string v10, " holds:"
38668     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
38670     invoke-virtual {v6}, Ljava/util/HashMap;->values()Ljava/util/Collection;
38672     move-result-object v10
38674     invoke-interface {v10}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
38676     move-result-object v2
38678     :cond_a3
38679     :goto_a3
38680     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
38682     move-result v10
38684     if-eqz v10, :cond_bf
38686     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
38688     move-result-object v5
38690     check-cast v5, Lcom/android/server/am/UriPermission;
38692     const-string v10, "    "
38694     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
38696     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
38698     if-eqz p5, :cond_a3
38700     const-string v10, "      "
38702     invoke-virtual {v5, p2, v10}, Lcom/android/server/am/UriPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
38704     goto :goto_a3
38706     :cond_bf
38707     add-int/lit8 v1, v1, 0x1
38709     goto :goto_78
38711     :cond_c2
38712     const/4 v4, 0x1
38714     :cond_c3
38715     return v4
38716 .end method
38718 .method protected dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
38719     .registers 25
38721     new-instance v15, Ljava/util/ArrayList;
38723     invoke-direct {v15}, Ljava/util/ArrayList;-><init>()V
38725     const-string v1, "all"
38727     move-object/from16 v0, p3
38729     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
38731     move-result v1
38733     if-eqz v1, :cond_55
38735     monitor-enter p0
38737     :try_start_10
38738     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
38740     move-result-object v1
38742     invoke-interface {v1}, Landroid/content/pm/IPackageManager;->getUsers()Ljava/util/List;
38744     move-result-object v17
38746     invoke-interface/range {v17 .. v17}, Ljava/util/List;->iterator()Ljava/util/Iterator;
38748     move-result-object v10
38750     :cond_1c
38751     invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
38753     move-result v1
38755     if-eqz v1, :cond_49
38757     invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
38759     move-result-object v16
38761     check-cast v16, Landroid/content/pm/UserInfo;
38763     move-object/from16 v0, p0
38765     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
38767     move-object/from16 v0, v16
38769     iget v2, v0, Landroid/content/pm/UserInfo;->id:I
38771     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
38773     move-result-object v1
38775     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
38777     move-result-object v11
38779     :goto_38
38780     invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z
38782     move-result v1
38784     if-eqz v1, :cond_1c
38786     invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object;
38788     move-result-object v14
38790     check-cast v14, Lcom/android/server/am/ServiceRecord;
38792     invoke-virtual {v15, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
38793     :try_end_47
38794     .catchall {:try_start_10 .. :try_end_47} :catchall_52
38795     .catch Landroid/os/RemoteException; {:try_start_10 .. :try_end_47} :catch_48
38797     goto :goto_38
38799     :catch_48
38800     move-exception v1
38802     :cond_49
38803     :try_start_49
38804     monitor-exit p0
38805     :try_end_4a
38806     .catchall {:try_start_49 .. :try_end_4a} :catchall_52
38808     :goto_4a
38809     invoke-virtual {v15}, Ljava/util/ArrayList;->size()I
38811     move-result v1
38813     if-gtz v1, :cond_d2
38815     const/4 v1, 0x0
38817     :goto_51
38818     return v1
38820     :catchall_52
38821     move-exception v1
38823     :try_start_53
38824     monitor-exit p0
38825     :try_end_54
38826     .catchall {:try_start_53 .. :try_end_54} :catchall_52
38828     throw v1
38830     :cond_55
38831     if-eqz p3, :cond_b2
38833     invoke-static/range {p3 .. p3}, Landroid/content/ComponentName;->unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;
38835     move-result-object v8
38837     :goto_5b
38838     const/4 v13, 0x0
38840     if-nez v8, :cond_69
38842     const/16 v1, 0x10
38844     :try_start_60
38845     move-object/from16 v0, p3
38847     invoke-static {v0, v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I
38848     :try_end_65
38849     .catch Ljava/lang/RuntimeException; {:try_start_60 .. :try_end_65} :catch_fb
38851     move-result v13
38853     const/16 p3, 0x0
38855     const/4 v8, 0x0
38857     :cond_69
38858     :goto_69
38859     monitor-enter p0
38861     :try_start_6a
38862     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
38864     move-result-object v1
38866     invoke-interface {v1}, Landroid/content/pm/IPackageManager;->getUsers()Ljava/util/List;
38868     move-result-object v17
38870     invoke-interface/range {v17 .. v17}, Ljava/util/List;->iterator()Ljava/util/Iterator;
38872     move-result-object v10
38874     :cond_76
38875     invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
38877     move-result v1
38879     if-eqz v1, :cond_ad
38881     invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
38883     move-result-object v16
38885     check-cast v16, Landroid/content/pm/UserInfo;
38887     move-object/from16 v0, p0
38889     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
38891     move-object/from16 v0, v16
38893     iget v2, v0, Landroid/content/pm/UserInfo;->id:I
38895     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
38897     move-result-object v1
38899     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
38901     move-result-object v11
38903     :cond_92
38904     :goto_92
38905     invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z
38907     move-result v1
38909     if-eqz v1, :cond_76
38911     invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object;
38913     move-result-object v14
38915     check-cast v14, Lcom/android/server/am/ServiceRecord;
38917     if-eqz v8, :cond_b4
38919     iget-object v1, v14, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
38921     invoke-virtual {v1, v8}, Landroid/content/ComponentName;->equals(Ljava/lang/Object;)Z
38923     move-result v1
38925     if-eqz v1, :cond_92
38927     invoke-virtual {v15, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
38928     :try_end_ab
38929     .catchall {:try_start_6a .. :try_end_ab} :catchall_af
38930     .catch Landroid/os/RemoteException; {:try_start_6a .. :try_end_ab} :catch_ac
38932     goto :goto_92
38934     :catch_ac
38935     move-exception v1
38937     :cond_ad
38938     :try_start_ad
38939     monitor-exit p0
38941     goto :goto_4a
38943     :catchall_af
38944     move-exception v1
38946     monitor-exit p0
38947     :try_end_b1
38948     .catchall {:try_start_ad .. :try_end_b1} :catchall_af
38950     throw v1
38952     :cond_b2
38953     const/4 v8, 0x0
38955     goto :goto_5b
38957     :cond_b4
38958     if-eqz p3, :cond_c8
38960     :try_start_b6
38961     iget-object v1, v14, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
38963     invoke-virtual {v1}, Landroid/content/ComponentName;->flattenToString()Ljava/lang/String;
38965     move-result-object v1
38967     move-object/from16 v0, p3
38969     invoke-virtual {v1, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
38971     move-result v1
38973     if-eqz v1, :cond_92
38975     invoke-virtual {v15, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
38977     goto :goto_92
38979     :cond_c8
38980     invoke-static {v14}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
38982     move-result v1
38984     if-ne v1, v13, :cond_92
38986     invoke-virtual {v15, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
38987     :try_end_d1
38988     .catchall {:try_start_b6 .. :try_end_d1} :catchall_af
38989     .catch Landroid/os/RemoteException; {:try_start_b6 .. :try_end_d1} :catch_ac
38991     goto :goto_92
38993     :cond_d2
38994     const/4 v12, 0x0
38996     const/4 v9, 0x0
38998     :goto_d4
38999     invoke-virtual {v15}, Ljava/util/ArrayList;->size()I
39001     move-result v1
39003     if-ge v9, v1, :cond_f8
39005     if-eqz v12, :cond_df
39007     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
39009     :cond_df
39010     const/4 v12, 0x1
39012     const-string v2, ""
39014     invoke-virtual {v15, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
39016     move-result-object v5
39018     check-cast v5, Lcom/android/server/am/ServiceRecord;
39020     move-object/from16 v1, p0
39022     move-object/from16 v3, p1
39024     move-object/from16 v4, p2
39026     move-object/from16 v6, p4
39028     move/from16 v7, p6
39030     invoke-direct/range {v1 .. v7}, Lcom/android/server/am/ActivityManagerService;->dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
39032     add-int/lit8 v9, v9, 0x1
39034     goto :goto_d4
39036     :cond_f8
39037     const/4 v1, 0x1
39039     goto/16 :goto_51
39041     :catch_fb
39042     move-exception v1
39044     goto/16 :goto_69
39045 .end method
39047 .method dumpServicesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
39048     .registers 38
39050     const/4 v15, 0x0
39052     new-instance v14, Lcom/android/server/am/ActivityManagerService$ItemMatcher;
39054     invoke-direct {v14}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
39056     move-object/from16 v0, p3
39058     move/from16 v1, p4
39060     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->build([Ljava/lang/String;I)I
39062     const-string v25, "ACTIVITY MANAGER SERVICES (dumpsys activity services)"
39064     move-object/from16 v0, p2
39066     move-object/from16 v1, v25
39068     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39070     :try_start_16
39071     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
39073     move-result-object v25
39075     invoke-interface/range {v25 .. v25}, Landroid/content/pm/IPackageManager;->getUsers()Ljava/util/List;
39077     move-result-object v24
39079     invoke-interface/range {v24 .. v24}, Ljava/util/List;->iterator()Ljava/util/Iterator;
39081     move-result-object v10
39083     :cond_22
39084     :goto_22
39085     invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
39087     move-result v25
39089     if-eqz v25, :cond_23c
39091     invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
39093     move-result-object v23
39095     check-cast v23, Landroid/content/pm/UserInfo;
39097     move-object/from16 v0, p0
39099     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
39101     move-object/from16 v25, v0
39103     move-object/from16 v0, v23
39105     iget v0, v0, Landroid/content/pm/UserInfo;->id:I
39107     move/from16 v26, v0
39109     invoke-virtual/range {v25 .. v26}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
39111     move-result-object v25
39113     invoke-interface/range {v25 .. v25}, Ljava/util/Collection;->size()I
39115     move-result v25
39117     if-lez v25, :cond_22
39119     const/16 v18, 0x0
39121     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
39123     move-result-wide v16
39125     move-object/from16 v0, p0
39127     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
39129     move-object/from16 v25, v0
39131     move-object/from16 v0, v23
39133     iget v0, v0, Landroid/content/pm/UserInfo;->id:I
39135     move/from16 v26, v0
39137     invoke-virtual/range {v25 .. v26}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
39139     move-result-object v25
39141     invoke-interface/range {v25 .. v25}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
39143     move-result-object v12
39145     const/4 v15, 0x0
39147     :cond_5f
39148     :goto_5f
39149     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
39151     move-result v25
39153     if-eqz v25, :cond_286
39155     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
39157     move-result-object v20
39159     check-cast v20, Lcom/android/server/am/ServiceRecord;
39161     move-object/from16 v0, v20
39163     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
39165     move-object/from16 v25, v0
39167     move-object/from16 v0, v20
39169     move-object/from16 v1, v25
39171     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
39173     move-result v25
39175     if-eqz v25, :cond_5f
39177     if-eqz p7, :cond_93
39179     move-object/from16 v0, v20
39181     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
39183     move-object/from16 v25, v0
39185     move-object/from16 v0, v25
39187     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
39189     move-object/from16 v25, v0
39191     move-object/from16 v0, p7
39193     move-object/from16 v1, v25
39195     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
39197     move-result v25
39199     if-eqz v25, :cond_5f
39201     :cond_93
39202     if-nez v18, :cond_a0
39204     const-string v25, "  Active services:"
39206     move-object/from16 v0, p2
39208     move-object/from16 v1, v25
39210     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39212     const/16 v18, 0x1
39214     :cond_a0
39215     if-eqz v15, :cond_a5
39217     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
39219     :cond_a5
39220     const-string v25, "  * "
39222     move-object/from16 v0, p2
39224     move-object/from16 v1, v25
39226     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39228     move-object/from16 v0, p2
39230     move-object/from16 v1, v20
39232     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
39234     if-eqz p5, :cond_125
39236     const-string v25, "    "
39238     move-object/from16 v0, v20
39240     move-object/from16 v1, p2
39242     move-object/from16 v2, v25
39244     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
39246     const/4 v15, 0x1
39248     :cond_c3
39249     if-eqz p6, :cond_5f
39251     move-object/from16 v0, v20
39253     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
39255     move-object/from16 v25, v0
39257     if-eqz v25, :cond_5f
39259     move-object/from16 v0, v20
39261     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
39263     move-object/from16 v25, v0
39265     move-object/from16 v0, v25
39267     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
39269     move-object/from16 v25, v0
39271     if-eqz v25, :cond_5f
39273     const-string v25, "    Client:"
39275     move-object/from16 v0, p2
39277     move-object/from16 v1, v25
39279     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39281     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
39282     :try_end_e7
39283     .catch Landroid/os/RemoteException; {:try_start_16 .. :try_end_e7} :catch_23b
39285     :try_start_e7
39286     new-instance v22, Lcom/android/server/am/TransferPipe;
39288     invoke-direct/range {v22 .. v22}, Lcom/android/server/am/TransferPipe;-><init>()V
39289     :try_end_ec
39290     .catch Ljava/io/IOException; {:try_start_e7 .. :try_end_ec} :catch_21c
39291     .catch Landroid/os/RemoteException; {:try_start_e7 .. :try_end_ec} :catch_27a
39293     :try_start_ec
39294     move-object/from16 v0, v20
39296     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
39298     move-object/from16 v25, v0
39300     move-object/from16 v0, v25
39302     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
39304     move-object/from16 v25, v0
39306     invoke-virtual/range {v22 .. v22}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
39308     move-result-object v26
39310     invoke-virtual/range {v26 .. v26}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
39312     move-result-object v26
39314     move-object/from16 v0, v25
39316     move-object/from16 v1, v26
39318     move-object/from16 v2, v20
39320     move-object/from16 v3, p3
39322     invoke-interface {v0, v1, v2, v3}, Landroid/app/IApplicationThread;->dumpService(Ljava/io/FileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V
39324     const-string v25, "      "
39326     move-object/from16 v0, v22
39328     move-object/from16 v1, v25
39330     invoke-virtual {v0, v1}, Lcom/android/server/am/TransferPipe;->setBufferPrefix(Ljava/lang/String;)V
39332     const-wide/16 v25, 0x7d0
39334     move-object/from16 v0, v22
39336     move-object/from16 v1, p1
39338     move-wide/from16 v2, v25
39340     invoke-virtual {v0, v1, v2, v3}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;J)V
39341     :try_end_11f
39342     .catchall {:try_start_ec .. :try_end_11f} :catchall_217
39344     :try_start_11f
39345     invoke-virtual/range {v22 .. v22}, Lcom/android/server/am/TransferPipe;->kill()V
39346     :try_end_122
39347     .catch Ljava/io/IOException; {:try_start_11f .. :try_end_122} :catch_21c
39348     .catch Landroid/os/RemoteException; {:try_start_11f .. :try_end_122} :catch_27a
39350     :goto_122
39351     const/4 v15, 0x1
39353     goto/16 :goto_5f
39355     :cond_125
39356     :try_start_125
39357     const-string v25, "    app="
39359     move-object/from16 v0, p2
39361     move-object/from16 v1, v25
39363     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39365     move-object/from16 v0, v20
39367     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
39369     move-object/from16 v25, v0
39371     move-object/from16 v0, p2
39373     move-object/from16 v1, v25
39375     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
39377     const-string v25, "    created="
39379     move-object/from16 v0, p2
39381     move-object/from16 v1, v25
39383     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39385     move-object/from16 v0, v20
39387     iget-wide v0, v0, Lcom/android/server/am/ServiceRecord;->createTime:J
39389     move-wide/from16 v25, v0
39391     move-wide/from16 v0, v25
39393     move-wide/from16 v2, v16
39395     move-object/from16 v4, p2
39397     invoke-static {v0, v1, v2, v3, v4}, Landroid/util/TimeUtils;->formatDuration(JJLjava/io/PrintWriter;)V
39399     const-string v25, " started="
39401     move-object/from16 v0, p2
39403     move-object/from16 v1, v25
39405     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39407     move-object/from16 v0, v20
39409     iget-boolean v0, v0, Lcom/android/server/am/ServiceRecord;->startRequested:Z
39411     move/from16 v25, v0
39413     move-object/from16 v0, p2
39415     move/from16 v1, v25
39417     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
39419     const-string v25, " connections="
39421     move-object/from16 v0, p2
39423     move-object/from16 v1, v25
39425     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39427     move-object/from16 v0, v20
39429     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
39431     move-object/from16 v25, v0
39433     invoke-virtual/range {v25 .. v25}, Ljava/util/HashMap;->size()I
39435     move-result v25
39437     move-object/from16 v0, p2
39439     move/from16 v1, v25
39441     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(I)V
39443     move-object/from16 v0, v20
39445     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
39447     move-object/from16 v25, v0
39449     invoke-virtual/range {v25 .. v25}, Ljava/util/HashMap;->size()I
39451     move-result v25
39453     if-lez v25, :cond_c3
39455     const-string v25, "    Connections:"
39457     move-object/from16 v0, p2
39459     move-object/from16 v1, v25
39461     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39463     move-object/from16 v0, v20
39465     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
39467     move-object/from16 v25, v0
39469     invoke-virtual/range {v25 .. v25}, Ljava/util/HashMap;->values()Ljava/util/Collection;
39471     move-result-object v25
39473     invoke-interface/range {v25 .. v25}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
39475     move-result-object v11
39477     :cond_1a6
39478     invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z
39480     move-result v25
39482     if-eqz v25, :cond_c3
39484     invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object;
39486     move-result-object v5
39488     check-cast v5, Ljava/util/ArrayList;
39490     const/4 v9, 0x0
39492     :goto_1b3
39493     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
39495     move-result v25
39497     move/from16 v0, v25
39499     if-ge v9, v0, :cond_1a6
39501     invoke-virtual {v5, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
39503     move-result-object v6
39505     check-cast v6, Lcom/android/server/am/ConnectionRecord;
39507     const-string v25, "      "
39509     move-object/from16 v0, p2
39511     move-object/from16 v1, v25
39513     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39515     iget-object v0, v6, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
39517     move-object/from16 v25, v0
39519     move-object/from16 v0, v25
39521     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
39523     move-object/from16 v25, v0
39525     move-object/from16 v0, v25
39527     iget-object v0, v0, Lcom/android/server/am/IntentBindRecord;->intent:Landroid/content/Intent$FilterComparison;
39529     move-object/from16 v25, v0
39531     invoke-virtual/range {v25 .. v25}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
39533     move-result-object v25
39535     const/16 v26, 0x0
39537     const/16 v27, 0x0
39539     const/16 v28, 0x0
39541     const/16 v29, 0x0
39543     invoke-virtual/range {v25 .. v29}, Landroid/content/Intent;->toShortString(ZZZZ)Ljava/lang/String;
39545     move-result-object v25
39547     move-object/from16 v0, p2
39549     move-object/from16 v1, v25
39551     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39553     const-string v25, " -> "
39555     move-object/from16 v0, p2
39557     move-object/from16 v1, v25
39559     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39561     iget-object v0, v6, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
39563     move-object/from16 v25, v0
39565     move-object/from16 v0, v25
39567     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
39569     move-object/from16 v19, v0
39571     if-eqz v19, :cond_214
39573     invoke-virtual/range {v19 .. v19}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
39575     move-result-object v25
39577     :goto_20a
39578     move-object/from16 v0, p2
39580     move-object/from16 v1, v25
39582     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39584     add-int/lit8 v9, v9, 0x1
39586     goto :goto_1b3
39588     :cond_214
39589     const-string v25, "null"
39590     :try_end_216
39591     .catch Landroid/os/RemoteException; {:try_start_125 .. :try_end_216} :catch_23b
39593     goto :goto_20a
39595     :catchall_217
39596     move-exception v25
39598     :try_start_218
39599     invoke-virtual/range {v22 .. v22}, Lcom/android/server/am/TransferPipe;->kill()V
39601     throw v25
39602     :try_end_21c
39603     .catch Ljava/io/IOException; {:try_start_218 .. :try_end_21c} :catch_21c
39604     .catch Landroid/os/RemoteException; {:try_start_218 .. :try_end_21c} :catch_27a
39606     :catch_21c
39607     move-exception v8
39609     :try_start_21d
39610     new-instance v25, Ljava/lang/StringBuilder;
39612     invoke-direct/range {v25 .. v25}, Ljava/lang/StringBuilder;-><init>()V
39614     const-string v26, "      Failure while dumping the service: "
39616     invoke-virtual/range {v25 .. v26}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39618     move-result-object v25
39620     move-object/from16 v0, v25
39622     invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
39624     move-result-object v25
39626     invoke-virtual/range {v25 .. v25}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
39628     move-result-object v25
39630     move-object/from16 v0, p2
39632     move-object/from16 v1, v25
39634     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39635     :try_end_239
39636     .catch Landroid/os/RemoteException; {:try_start_21d .. :try_end_239} :catch_23b
39638     goto/16 :goto_122
39640     :catch_23b
39641     move-exception v25
39643     :cond_23c
39644     move-object/from16 v0, p0
39646     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
39648     move-object/from16 v25, v0
39650     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39652     move-result v25
39654     if-lez v25, :cond_2d8
39656     const/16 v18, 0x0
39658     const/4 v9, 0x0
39660     :goto_24b
39661     move-object/from16 v0, p0
39663     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
39665     move-object/from16 v25, v0
39667     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39669     move-result v25
39671     move/from16 v0, v25
39673     if-ge v9, v0, :cond_2d7
39675     move-object/from16 v0, p0
39677     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPendingServices:Ljava/util/ArrayList;
39679     move-object/from16 v25, v0
39681     move-object/from16 v0, v25
39683     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
39685     move-result-object v20
39687     check-cast v20, Lcom/android/server/am/ServiceRecord;
39689     move-object/from16 v0, v20
39691     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
39693     move-object/from16 v25, v0
39695     move-object/from16 v0, v20
39697     move-object/from16 v1, v25
39699     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
39701     move-result v25
39703     if-nez v25, :cond_28a
39705     :cond_277
39706     :goto_277
39707     add-int/lit8 v9, v9, 0x1
39709     goto :goto_24b
39711     :catch_27a
39712     move-exception v8
39714     :try_start_27b
39715     const-string v25, "      Got a RemoteException while dumping the service"
39717     move-object/from16 v0, p2
39719     move-object/from16 v1, v25
39721     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39722     :try_end_284
39723     .catch Landroid/os/RemoteException; {:try_start_27b .. :try_end_284} :catch_23b
39725     goto/16 :goto_122
39727     :cond_286
39728     move/from16 v15, v18
39730     goto/16 :goto_22
39732     :cond_28a
39733     if-eqz p7, :cond_2a2
39735     move-object/from16 v0, v20
39737     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
39739     move-object/from16 v25, v0
39741     move-object/from16 v0, v25
39743     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
39745     move-object/from16 v25, v0
39747     move-object/from16 v0, p7
39749     move-object/from16 v1, v25
39751     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
39753     move-result v25
39755     if-eqz v25, :cond_277
39757     :cond_2a2
39758     if-nez v18, :cond_2bb
39760     if-eqz v15, :cond_2af
39762     const-string v25, " "
39764     move-object/from16 v0, p2
39766     move-object/from16 v1, v25
39768     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39770     :cond_2af
39771     const/4 v15, 0x1
39773     const-string v25, "  Pending services:"
39775     move-object/from16 v0, p2
39777     move-object/from16 v1, v25
39779     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39781     const/16 v18, 0x1
39783     :cond_2bb
39784     const-string v25, "  * Pending "
39786     move-object/from16 v0, p2
39788     move-object/from16 v1, v25
39790     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39792     move-object/from16 v0, p2
39794     move-object/from16 v1, v20
39796     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
39798     const-string v25, "    "
39800     move-object/from16 v0, v20
39802     move-object/from16 v1, p2
39804     move-object/from16 v2, v25
39806     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
39808     goto :goto_277
39810     :cond_2d7
39811     const/4 v15, 0x1
39813     :cond_2d8
39814     move-object/from16 v0, p0
39816     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
39818     move-object/from16 v25, v0
39820     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39822     move-result v25
39824     if-lez v25, :cond_364
39826     const/16 v18, 0x0
39828     const/4 v9, 0x0
39830     :goto_2e7
39831     move-object/from16 v0, p0
39833     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
39835     move-object/from16 v25, v0
39837     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39839     move-result v25
39841     move/from16 v0, v25
39843     if-ge v9, v0, :cond_363
39845     move-object/from16 v0, p0
39847     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
39849     move-object/from16 v25, v0
39851     move-object/from16 v0, v25
39853     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
39855     move-result-object v20
39857     check-cast v20, Lcom/android/server/am/ServiceRecord;
39859     move-object/from16 v0, v20
39861     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
39863     move-object/from16 v25, v0
39865     move-object/from16 v0, v20
39867     move-object/from16 v1, v25
39869     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
39871     move-result v25
39873     if-nez v25, :cond_316
39875     :cond_313
39876     :goto_313
39877     add-int/lit8 v9, v9, 0x1
39879     goto :goto_2e7
39881     :cond_316
39882     if-eqz p7, :cond_32e
39884     move-object/from16 v0, v20
39886     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
39888     move-object/from16 v25, v0
39890     move-object/from16 v0, v25
39892     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
39894     move-object/from16 v25, v0
39896     move-object/from16 v0, p7
39898     move-object/from16 v1, v25
39900     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
39902     move-result v25
39904     if-eqz v25, :cond_313
39906     :cond_32e
39907     if-nez v18, :cond_347
39909     if-eqz v15, :cond_33b
39911     const-string v25, " "
39913     move-object/from16 v0, p2
39915     move-object/from16 v1, v25
39917     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39919     :cond_33b
39920     const/4 v15, 0x1
39922     const-string v25, "  Restarting services:"
39924     move-object/from16 v0, p2
39926     move-object/from16 v1, v25
39928     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
39930     const/16 v18, 0x1
39932     :cond_347
39933     const-string v25, "  * Restarting "
39935     move-object/from16 v0, p2
39937     move-object/from16 v1, v25
39939     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
39941     move-object/from16 v0, p2
39943     move-object/from16 v1, v20
39945     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
39947     const-string v25, "    "
39949     move-object/from16 v0, v20
39951     move-object/from16 v1, p2
39953     move-object/from16 v2, v25
39955     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
39957     goto :goto_313
39959     :cond_363
39960     const/4 v15, 0x1
39962     :cond_364
39963     move-object/from16 v0, p0
39965     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
39967     move-object/from16 v25, v0
39969     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39971     move-result v25
39973     if-lez v25, :cond_3f0
39975     const/16 v18, 0x0
39977     const/4 v9, 0x0
39979     :goto_373
39980     move-object/from16 v0, p0
39982     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
39984     move-object/from16 v25, v0
39986     invoke-virtual/range {v25 .. v25}, Ljava/util/ArrayList;->size()I
39988     move-result v25
39990     move/from16 v0, v25
39992     if-ge v9, v0, :cond_3ef
39994     move-object/from16 v0, p0
39996     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
39998     move-object/from16 v25, v0
40000     move-object/from16 v0, v25
40002     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40004     move-result-object v20
40006     check-cast v20, Lcom/android/server/am/ServiceRecord;
40008     move-object/from16 v0, v20
40010     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
40012     move-object/from16 v25, v0
40014     move-object/from16 v0, v20
40016     move-object/from16 v1, v25
40018     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
40020     move-result v25
40022     if-nez v25, :cond_3a2
40024     :cond_39f
40025     :goto_39f
40026     add-int/lit8 v9, v9, 0x1
40028     goto :goto_373
40030     :cond_3a2
40031     if-eqz p7, :cond_3ba
40033     move-object/from16 v0, v20
40035     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
40037     move-object/from16 v25, v0
40039     move-object/from16 v0, v25
40041     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
40043     move-object/from16 v25, v0
40045     move-object/from16 v0, p7
40047     move-object/from16 v1, v25
40049     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
40051     move-result v25
40053     if-eqz v25, :cond_39f
40055     :cond_3ba
40056     if-nez v18, :cond_3d3
40058     if-eqz v15, :cond_3c7
40060     const-string v25, " "
40062     move-object/from16 v0, p2
40064     move-object/from16 v1, v25
40066     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
40068     :cond_3c7
40069     const/4 v15, 0x1
40071     const-string v25, "  Stopping services:"
40073     move-object/from16 v0, p2
40075     move-object/from16 v1, v25
40077     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
40079     const/16 v18, 0x1
40081     :cond_3d3
40082     const-string v25, "  * Stopping "
40084     move-object/from16 v0, p2
40086     move-object/from16 v1, v25
40088     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
40090     move-object/from16 v0, p2
40092     move-object/from16 v1, v20
40094     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
40096     const-string v25, "    "
40098     move-object/from16 v0, v20
40100     move-object/from16 v1, p2
40102     move-object/from16 v2, v25
40104     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
40106     goto :goto_39f
40108     :cond_3ef
40109     const/4 v15, 0x1
40111     :cond_3f0
40112     if-eqz p5, :cond_4b2
40114     move-object/from16 v0, p0
40116     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
40118     move-object/from16 v25, v0
40120     invoke-virtual/range {v25 .. v25}, Ljava/util/HashMap;->size()I
40122     move-result v25
40124     if-lez v25, :cond_4b2
40126     const/16 v18, 0x0
40128     move-object/from16 v0, p0
40130     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
40132     move-object/from16 v25, v0
40134     invoke-virtual/range {v25 .. v25}, Ljava/util/HashMap;->values()Ljava/util/Collection;
40136     move-result-object v25
40138     invoke-interface/range {v25 .. v25}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
40140     move-result-object v13
40142     :cond_40e
40143     invoke-interface {v13}, Ljava/util/Iterator;->hasNext()Z
40145     move-result v25
40147     if-eqz v25, :cond_4b1
40149     invoke-interface {v13}, Ljava/util/Iterator;->next()Ljava/lang/Object;
40151     move-result-object v21
40153     check-cast v21, Ljava/util/ArrayList;
40155     const/4 v9, 0x0
40157     :goto_41b
40158     invoke-virtual/range {v21 .. v21}, Ljava/util/ArrayList;->size()I
40160     move-result v25
40162     move/from16 v0, v25
40164     if-ge v9, v0, :cond_40e
40166     move-object/from16 v0, v21
40168     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40170     move-result-object v7
40172     check-cast v7, Lcom/android/server/am/ConnectionRecord;
40174     iget-object v0, v7, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
40176     move-object/from16 v25, v0
40178     move-object/from16 v0, v25
40180     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
40182     move-object/from16 v25, v0
40184     iget-object v0, v7, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
40186     move-object/from16 v26, v0
40188     move-object/from16 v0, v26
40190     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
40192     move-object/from16 v26, v0
40194     move-object/from16 v0, v26
40196     iget-object v0, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
40198     move-object/from16 v26, v0
40200     move-object/from16 v0, v25
40202     move-object/from16 v1, v26
40204     invoke-virtual {v14, v0, v1}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
40206     move-result v25
40208     if-nez v25, :cond_452
40210     :cond_44f
40211     :goto_44f
40212     add-int/lit8 v9, v9, 0x1
40214     goto :goto_41b
40216     :cond_452
40217     if-eqz p7, :cond_480
40219     iget-object v0, v7, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
40221     move-object/from16 v25, v0
40223     move-object/from16 v0, v25
40225     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
40227     move-object/from16 v25, v0
40229     if-eqz v25, :cond_44f
40231     iget-object v0, v7, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
40233     move-object/from16 v25, v0
40235     move-object/from16 v0, v25
40237     iget-object v0, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
40239     move-object/from16 v25, v0
40241     move-object/from16 v0, v25
40243     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
40245     move-object/from16 v25, v0
40247     move-object/from16 v0, v25
40249     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
40251     move-object/from16 v25, v0
40253     move-object/from16 v0, p7
40255     move-object/from16 v1, v25
40257     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
40259     move-result v25
40261     if-eqz v25, :cond_44f
40263     :cond_480
40264     if-nez v18, :cond_499
40266     if-eqz v15, :cond_48d
40268     const-string v25, " "
40270     move-object/from16 v0, p2
40272     move-object/from16 v1, v25
40274     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
40276     :cond_48d
40277     const/4 v15, 0x1
40279     const-string v25, "  Connection bindings to services:"
40281     move-object/from16 v0, p2
40283     move-object/from16 v1, v25
40285     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
40287     const/16 v18, 0x1
40289     :cond_499
40290     const-string v25, "  * "
40292     move-object/from16 v0, p2
40294     move-object/from16 v1, v25
40296     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
40298     move-object/from16 v0, p2
40300     invoke-virtual {v0, v7}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
40302     const-string v25, "    "
40304     move-object/from16 v0, p2
40306     move-object/from16 v1, v25
40308     invoke-virtual {v7, v0, v1}, Lcom/android/server/am/ConnectionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
40310     goto :goto_44f
40312     :cond_4b1
40313     const/4 v15, 0x1
40315     :cond_4b2
40316     return v15
40317 .end method
40319 .method enableScreenAfterBoot()V
40320     .registers 4
40322     const/16 v0, 0xbea
40324     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
40326     move-result-wide v1
40328     invoke-static {v0, v1, v2}, Landroid/util/EventLog;->writeEvent(IJ)I
40330     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
40332     invoke-virtual {v0}, Lcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
40334     monitor-enter p0
40336     :try_start_f
40337     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
40339     monitor-exit p0
40341     return-void
40343     :catchall_14
40344     move-exception v0
40346     monitor-exit p0
40347     :try_end_16
40348     .catchall {:try_start_f .. :try_end_16} :catchall_14
40350     throw v0
40351 .end method
40353 .method enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
40354     .registers 6
40356     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
40358     move-result v1
40360     if-nez v1, :cond_7
40362     return-void
40364     :cond_7
40365     new-instance v1, Ljava/lang/StringBuilder;
40367     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
40369     const-string v2, "Permission Denial: "
40371     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40373     move-result-object v1
40375     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40377     move-result-object v1
40379     const-string v2, " from pid="
40381     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40383     move-result-object v1
40385     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
40387     move-result v2
40389     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
40391     move-result-object v1
40393     const-string v2, ", uid="
40395     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40397     move-result-object v1
40399     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40401     move-result v2
40403     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
40405     move-result-object v1
40407     const-string v2, " requires "
40409     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40411     move-result-object v1
40413     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40415     move-result-object v1
40417     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
40419     move-result-object v0
40421     const-string v1, "ActivityManager"
40423     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
40425     new-instance v1, Ljava/lang/SecurityException;
40427     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
40429     throw v1
40430 .end method
40432 .method enforceNotIsolatedCaller(Ljava/lang/String;)V
40433     .registers 5
40435     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40437     move-result v0
40439     invoke-static {v0}, Landroid/os/UserId;->isIsolated(I)Z
40441     move-result v0
40443     if-eqz v0, :cond_23
40445     new-instance v0, Ljava/lang/SecurityException;
40447     new-instance v1, Ljava/lang/StringBuilder;
40449     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
40451     const-string v2, "Isolated process not allowed to call "
40453     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40455     move-result-object v1
40457     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40459     move-result-object v1
40461     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
40463     move-result-object v1
40465     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
40467     throw v0
40469     :cond_23
40470     return-void
40471 .end method
40473 .method final ensureBootCompleted()V
40474     .registers 5
40476     const/4 v1, 0x1
40478     const/4 v2, 0x0
40480     monitor-enter p0
40482     :try_start_3
40483     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
40485     const/4 v3, 0x0
40487     iput-boolean v3, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
40489     iget-boolean v3, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
40491     if-nez v3, :cond_1b
40493     :goto_c
40494     const/4 v2, 0x1
40496     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
40498     monitor-exit p0
40499     :try_end_10
40500     .catchall {:try_start_3 .. :try_end_10} :catchall_1d
40502     if-eqz v0, :cond_15
40504     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->finishBooting()V
40506     :cond_15
40507     if-eqz v1, :cond_1a
40509     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->enableScreenAfterBoot()V
40511     :cond_1a
40512     return-void
40514     :cond_1b
40515     move v1, v2
40517     goto :goto_c
40519     :catchall_1d
40520     move-exception v2
40522     :try_start_1e
40523     monitor-exit p0
40524     :try_end_1f
40525     .catchall {:try_start_1e .. :try_end_1f} :catchall_1d
40527     throw v2
40528 .end method
40530 .method ensurePackageDexOpt(Ljava/lang/String;)V
40531     .registers 4
40533     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
40535     move-result-object v0
40537     :try_start_4
40538     invoke-interface {v0, p1}, Landroid/content/pm/IPackageManager;->performDexOpt(Ljava/lang/String;)Z
40540     move-result v1
40542     if-eqz v1, :cond_d
40544     const/4 v1, 0x1
40546     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDidDexOpt:Z
40547     :try_end_d
40548     .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_d} :catch_e
40550     :cond_d
40551     :goto_d
40552     return-void
40554     :catch_e
40555     move-exception v1
40557     goto :goto_d
40558 .end method
40560 .method public final enterSafeMode()V
40561     .registers 2
40563     monitor-enter p0
40565     :try_start_1
40566     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
40567     :try_end_3
40568     .catchall {:try_start_1 .. :try_end_3} :catchall_e
40570     if-nez v0, :cond_c
40572     :try_start_5
40573     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
40575     move-result-object v0
40577     invoke-interface {v0}, Landroid/content/pm/IPackageManager;->enterSafeMode()V
40578     :try_end_c
40579     .catchall {:try_start_5 .. :try_end_c} :catchall_e
40580     .catch Landroid/os/RemoteException; {:try_start_5 .. :try_end_c} :catch_11
40582     :cond_c
40583     :goto_c
40584     :try_start_c
40585     monitor-exit p0
40587     return-void
40589     :catchall_e
40590     move-exception v0
40592     monitor-exit p0
40593     :try_end_10
40594     .catchall {:try_start_c .. :try_end_10} :catchall_e
40596     throw v0
40598     :catch_11
40599     move-exception v0
40601     goto :goto_c
40602 .end method
40604 .method public final finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;)Z
40605     .registers 12
40607     const/4 v4, 0x0
40609     if-eqz p3, :cond_12
40611     invoke-virtual {p3}, Landroid/content/Intent;->hasFileDescriptors()Z
40613     move-result v6
40615     const/4 v7, 0x1
40617     if-ne v6, v7, :cond_12
40619     new-instance v6, Ljava/lang/IllegalArgumentException;
40621     const-string v7, "File descriptors passed in Intent"
40623     invoke-direct {v6, v7}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
40625     throw v6
40627     :cond_12
40628     monitor-enter p0
40630     :try_start_13
40631     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
40633     if-eqz v6, :cond_35
40635     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
40637     const/4 v7, 0x0
40639     invoke-virtual {v6, p1, v7}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Landroid/os/IBinder;I)Lcom/android/server/am/ActivityRecord;
40640     :try_end_1d
40641     .catchall {:try_start_13 .. :try_end_1d} :catchall_32
40643     move-result-object v1
40645     if-eqz v1, :cond_35
40647     const/4 v5, 0x1
40649     :try_start_21
40650     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
40652     iget-object v7, v1, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
40654     invoke-interface {v6, v7}, Landroid/app/IActivityController;->activityResuming(Ljava/lang/String;)Z
40655     :try_end_28
40656     .catchall {:try_start_21 .. :try_end_28} :catchall_32
40657     .catch Landroid/os/RemoteException; {:try_start_21 .. :try_end_28} :catch_2d
40659     move-result v5
40661     :goto_29
40662     if-nez v5, :cond_35
40664     :try_start_2b
40665     monitor-exit p0
40667     :goto_2c
40668     return v4
40670     :catch_2d
40671     move-exception v0
40673     const/4 v6, 0x0
40675     iput-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
40677     goto :goto_29
40679     :catchall_32
40680     move-exception v6
40682     monitor-exit p0
40683     :try_end_34
40684     .catchall {:try_start_2b .. :try_end_34} :catchall_32
40686     throw v6
40688     :cond_35
40689     :try_start_35
40690     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
40692     move-result-wide v2
40694     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
40696     const-string v7, "app-request"
40698     invoke-virtual {v6, p1, p2, p3, v7}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;)Z
40700     move-result v4
40702     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
40704     monitor-exit p0
40705     :try_end_45
40706     .catchall {:try_start_35 .. :try_end_45} :catchall_32
40708     goto :goto_2c
40709 .end method
40711 .method public finishActivityAffinity(Landroid/os/IBinder;)Z
40712     .registers 6
40714     monitor-enter p0
40716     :try_start_1
40717     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
40719     move-result-wide v0
40721     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
40723     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->finishActivityAffinityLocked(Landroid/os/IBinder;)Z
40725     move-result v2
40727     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
40729     monitor-exit p0
40731     return v2
40733     :catchall_10
40734     move-exception v3
40736     monitor-exit p0
40737     :try_end_12
40738     .catchall {:try_start_1 .. :try_end_12} :catchall_10
40740     throw v3
40741 .end method
40743 .method final finishBooting()V
40744     .registers 24
40746     new-instance v20, Landroid/content/IntentFilter;
40748     invoke-direct/range {v20 .. v20}, Landroid/content/IntentFilter;-><init>()V
40750     const-string v2, "android.intent.action.QUERY_PACKAGE_RESTART"
40752     move-object/from16 v0, v20
40754     invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
40756     const-string v2, "package"
40758     move-object/from16 v0, v20
40760     invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addDataScheme(Ljava/lang/String;)V
40762     move-object/from16 v0, p0
40764     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
40766     new-instance v3, Lcom/android/server/am/ActivityManagerService$6;
40768     move-object/from16 v0, p0
40770     invoke-direct {v3, v0}, Lcom/android/server/am/ActivityManagerService$6;-><init>(Lcom/android/server/am/ActivityManagerService;)V
40772     move-object/from16 v0, v20
40774     invoke-virtual {v2, v3, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
40776     new-instance v22, Landroid/content/IntentFilter;
40778     invoke-direct/range {v22 .. v22}, Landroid/content/IntentFilter;-><init>()V
40780     const-string v2, "android.intent.action.USER_REMOVED"
40782     move-object/from16 v0, v22
40784     invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
40786     move-object/from16 v0, p0
40788     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
40790     new-instance v3, Lcom/android/server/am/ActivityManagerService$7;
40792     move-object/from16 v0, p0
40794     invoke-direct {v3, v0}, Lcom/android/server/am/ActivityManagerService$7;-><init>(Lcom/android/server/am/ActivityManagerService;)V
40796     move-object/from16 v0, v22
40798     invoke-virtual {v2, v3, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
40800     move-object/from16 v0, p0
40802     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
40804     new-instance v3, Lcom/android/server/am/ActivityManagerService$8;
40806     move-object/from16 v0, p0
40808     invoke-direct {v3, v0}, Lcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V
40810     invoke-static {v2, v3}, Lcom/android/internal/app/ThemeUtils;->registerThemeChangeReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;)V
40812     monitor-enter p0
40814     :try_start_4e
40815     move-object/from16 v0, p0
40817     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
40819     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
40821     move-result v17
40823     if-lez v17, :cond_80
40825     new-instance v21, Ljava/util/ArrayList;
40827     move-object/from16 v0, p0
40829     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
40831     move-object/from16 v0, v21
40833     invoke-direct {v0, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
40835     const/16 v18, 0x0
40837     :goto_65
40838     move/from16 v0, v18
40840     move/from16 v1, v17
40842     if-ge v0, v1, :cond_80
40844     move-object/from16 v0, v21
40846     move/from16 v1, v18
40848     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40850     move-result-object v2
40852     check-cast v2, Lcom/android/server/am/ProcessRecord;
40854     const-string v3, "on-hold"
40856     const/4 v4, 0x0
40858     move-object/from16 v0, p0
40860     invoke-direct {v0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
40862     add-int/lit8 v18, v18, 0x1
40864     goto :goto_65
40866     :cond_80
40867     move-object/from16 v0, p0
40869     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
40871     const/4 v3, 0x1
40873     if-eq v2, v3, :cond_cb
40875     move-object/from16 v0, p0
40877     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
40879     const/16 v3, 0x1b
40881     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
40883     move-result-object v19
40885     move-object/from16 v0, p0
40887     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
40889     const-wide/32 v3, 0xdbba0
40891     move-object/from16 v0, v19
40893     invoke-virtual {v2, v0, v3, v4}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
40895     const-string v2, "sys.boot_completed"
40897     const-string v3, "1"
40899     invoke-static {v2, v3}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
40901     const-string v2, "dev.bootcomplete"
40903     const-string v3, "1"
40905     invoke-static {v2, v3}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
40907     const/4 v3, 0x0
40909     const/4 v4, 0x0
40911     new-instance v5, Landroid/content/Intent;
40913     const-string v2, "android.intent.action.BOOT_COMPLETED"
40915     const/4 v6, 0x0
40917     invoke-direct {v5, v2, v6}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
40919     const/4 v6, 0x0
40921     const/4 v7, 0x0
40923     const/4 v8, 0x0
40925     const/4 v9, 0x0
40927     const/4 v10, 0x0
40929     const-string v11, "android.permission.RECEIVE_BOOT_COMPLETED"
40931     const/4 v12, 0x0
40933     const/4 v13, 0x0
40935     sget v14, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
40937     const/16 v15, 0x3e8
40939     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
40941     move-result v16
40943     move-object/from16 v2, p0
40945     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
40947     :cond_cb
40948     monitor-exit p0
40950     return-void
40952     :catchall_cd
40953     move-exception v2
40955     monitor-exit p0
40956     :try_end_cf
40957     .catchall {:try_start_4e .. :try_end_cf} :catchall_cd
40959     throw v2
40960 .end method
40962 .method public final finishHeavyWeightApp()V
40963     .registers 10
40965     const-string v0, "android.permission.FORCE_STOP_PACKAGES"
40967     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
40969     move-result v0
40971     if-eqz v0, :cond_44
40973     new-instance v0, Ljava/lang/StringBuilder;
40975     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
40977     const-string v3, "Permission Denial: finishHeavyWeightApp() from pid="
40979     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40981     move-result-object v0
40983     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
40985     move-result v3
40987     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
40989     move-result-object v0
40991     const-string v3, ", uid="
40993     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40995     move-result-object v0
40997     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40999     move-result v3
41001     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41003     move-result-object v0
41005     const-string v3, " requires "
41007     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41009     move-result-object v0
41011     const-string v3, "android.permission.FORCE_STOP_PACKAGES"
41013     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41015     move-result-object v0
41017     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41019     move-result-object v8
41021     const-string v0, "ActivityManager"
41023     invoke-static {v0, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41025     new-instance v0, Ljava/lang/SecurityException;
41027     invoke-direct {v0, v8}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
41029     throw v0
41031     :cond_44
41032     monitor-enter p0
41034     :try_start_45
41035     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
41037     if-nez v0, :cond_4b
41039     monitor-exit p0
41041     :goto_4a
41042     return-void
41044     :cond_4b
41045     new-instance v6, Ljava/util/ArrayList;
41047     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
41049     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
41051     invoke-direct {v6, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
41053     const/4 v7, 0x0
41055     :goto_55
41056     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
41058     move-result v0
41060     if-ge v7, v0, :cond_7b
41062     invoke-virtual {v6, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
41064     move-result-object v1
41066     check-cast v1, Lcom/android/server/am/ActivityRecord;
41068     iget-boolean v0, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
41070     if-nez v0, :cond_78
41072     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41074     iget-object v3, v1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
41076     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityStack;->indexOfTokenLocked(Landroid/os/IBinder;)I
41078     move-result v2
41080     if-ltz v2, :cond_78
41082     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41084     const/4 v3, 0x0
41086     const/4 v4, 0x0
41088     const-string v5, "finish-heavy"
41090     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
41092     :cond_78
41093     add-int/lit8 v7, v7, 0x1
41095     goto :goto_55
41097     :cond_7b
41098     const/4 v0, 0x0
41100     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
41102     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
41104     const/16 v3, 0x19
41106     invoke-virtual {v0, v3}, Landroid/os/Handler;->sendEmptyMessage(I)Z
41108     monitor-exit p0
41110     goto :goto_4a
41112     :catchall_87
41113     move-exception v0
41115     monitor-exit p0
41116     :try_end_89
41117     .catchall {:try_start_45 .. :try_end_89} :catchall_87
41119     throw v0
41120 .end method
41122 .method public finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V
41123     .registers 11
41125     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
41127     move-result v3
41129     if-eqz p3, :cond_14
41131     invoke-virtual {p3}, Landroid/os/Bundle;->hasFileDescriptors()Z
41133     move-result v4
41135     if-eqz v4, :cond_14
41137     new-instance v4, Ljava/lang/IllegalArgumentException;
41139     const-string v5, "File descriptors passed in Intent"
41141     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
41143     throw v4
41145     :cond_14
41146     monitor-enter p0
41148     :try_start_15
41149     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
41151     move-result-object v0
41153     if-nez v0, :cond_35
41155     const-string v4, "ActivityManager"
41157     new-instance v5, Ljava/lang/StringBuilder;
41159     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
41161     const-string v6, "finishInstrumentation: no app for "
41163     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41165     move-result-object v5
41167     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
41169     move-result-object v5
41171     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41173     move-result-object v5
41175     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41177     monitor-exit p0
41179     :goto_34
41180     return-void
41182     :cond_35
41183     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
41185     move-result-wide v1
41187     invoke-virtual {p0, v0, p2, p3}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
41189     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41191     monitor-exit p0
41193     goto :goto_34
41195     :catchall_41
41196     move-exception v4
41198     monitor-exit p0
41199     :try_end_43
41200     .catchall {:try_start_15 .. :try_end_43} :catchall_41
41202     throw v4
41203 .end method
41205 .method finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
41206     .registers 12
41208     const/4 v5, 0x1
41210     const/4 v3, 0x0
41212     const/4 v2, 0x0
41214     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
41216     if-eqz v0, :cond_e
41218     :try_start_7
41219     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
41221     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
41223     invoke-interface {v0, v1, p2, p3}, Landroid/app/IInstrumentationWatcher;->instrumentationFinished(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
41224     :try_end_e
41225     .catch Landroid/os/RemoteException; {:try_start_7 .. :try_end_e} :catch_24
41227     :cond_e
41228     :goto_e
41229     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
41231     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
41233     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
41235     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
41237     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
41239     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
41241     const/4 v2, -0x1
41243     iget v7, p1, Lcom/android/server/am/ProcessRecord;->userId:I
41245     move-object v0, p0
41247     move v4, v3
41249     move v6, v5
41251     invoke-direct/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
41253     return-void
41255     :catch_24
41256     move-exception v0
41258     goto :goto_e
41259 .end method
41261 .method public finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;Z)V
41262     .registers 16
41264     if-eqz p4, :cond_10
41266     invoke-virtual {p4}, Landroid/os/Bundle;->hasFileDescriptors()Z
41268     move-result v0
41270     if-eqz v0, :cond_10
41272     new-instance v0, Ljava/lang/IllegalArgumentException;
41274     const-string v2, "File descriptors passed in Bundle"
41276     invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
41278     throw v0
41280     :cond_10
41281     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
41283     move-result-wide v8
41285     const/4 v7, 0x0
41287     const/4 v1, 0x0
41289     :try_start_16
41290     monitor-enter p0
41291     :try_end_17
41292     .catchall {:try_start_16 .. :try_end_17} :catchall_3b
41294     :try_start_17
41295     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
41297     move-result-object v1
41299     if-eqz v1, :cond_28
41301     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
41303     const/4 v6, 0x1
41305     move v2, p2
41307     move-object v3, p3
41309     move-object v4, p4
41311     move v5, p5
41313     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
41315     move-result v7
41317     :cond_28
41318     monitor-exit p0
41319     :try_end_29
41320     .catchall {:try_start_17 .. :try_end_29} :catchall_38
41322     if-eqz v7, :cond_31
41324     :try_start_2b
41325     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
41327     const/4 v2, 0x0
41329     invoke-virtual {v0, v2}, Lcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
41331     :cond_31
41332     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
41333     :try_end_34
41334     .catchall {:try_start_2b .. :try_end_34} :catchall_3b
41336     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41338     return-void
41340     :catchall_38
41341     move-exception v0
41343     :try_start_39
41344     monitor-exit p0
41345     :try_end_3a
41346     .catchall {:try_start_39 .. :try_end_3a} :catchall_38
41348     :try_start_3a
41349     throw v0
41350     :try_end_3b
41351     .catchall {:try_start_3a .. :try_end_3b} :catchall_3b
41353     :catchall_3b
41354     move-exception v0
41356     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41358     throw v0
41359 .end method
41361 .method public final finishSubActivity(Landroid/os/IBinder;Ljava/lang/String;I)V
41362     .registers 7
41364     monitor-enter p0
41366     :try_start_1
41367     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
41369     move-result-wide v0
41371     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41373     invoke-virtual {v2, p1, p2, p3}, Lcom/android/server/am/ActivityStack;->finishSubActivityLocked(Landroid/os/IBinder;Ljava/lang/String;I)V
41375     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41377     monitor-exit p0
41379     return-void
41381     :catchall_f
41382     move-exception v2
41384     monitor-exit p0
41385     :try_end_11
41386     .catchall {:try_start_1 .. :try_end_11} :catchall_f
41388     throw v2
41389 .end method
41391 .method public forceStopPackage(Ljava/lang/String;)V
41392     .registers 12
41394     const-string v7, "android.permission.FORCE_STOP_PACKAGES"
41396     invoke-virtual {p0, v7}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
41398     move-result v7
41400     if-eqz v7, :cond_44
41402     new-instance v7, Ljava/lang/StringBuilder;
41404     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
41406     const-string v8, "Permission Denial: forceStopPackage() from pid="
41408     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41410     move-result-object v7
41412     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
41414     move-result v8
41416     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41418     move-result-object v7
41420     const-string v8, ", uid="
41422     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41424     move-result-object v7
41426     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
41428     move-result v8
41430     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41432     move-result-object v7
41434     const-string v8, " requires "
41436     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41438     move-result-object v7
41440     const-string v8, "android.permission.FORCE_STOP_PACKAGES"
41442     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41444     move-result-object v7
41446     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41448     move-result-object v3
41450     const-string v7, "ActivityManager"
41452     invoke-static {v7, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41454     new-instance v7, Ljava/lang/SecurityException;
41456     invoke-direct {v7, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
41458     throw v7
41460     :cond_44
41461     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
41463     move-result v6
41465     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
41467     move-result-wide v0
41469     :try_start_4c
41470     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
41472     move-result-object v5
41474     const/4 v4, -0x1
41476     monitor-enter p0
41477     :try_end_52
41478     .catchall {:try_start_4c .. :try_end_52} :catchall_82
41480     :try_start_52
41481     invoke-interface {v5, p1, v6}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
41482     :try_end_55
41483     .catchall {:try_start_52 .. :try_end_55} :catchall_7f
41484     .catch Landroid/os/RemoteException; {:try_start_52 .. :try_end_55} :catch_ab
41486     move-result v4
41488     :goto_56
41489     const/4 v7, -0x1
41491     if-ne v4, v7, :cond_76
41493     :try_start_59
41494     const-string v7, "ActivityManager"
41496     new-instance v8, Ljava/lang/StringBuilder;
41498     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
41500     const-string v9, "Invalid packageName: "
41502     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41504     move-result-object v8
41506     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41508     move-result-object v8
41510     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41512     move-result-object v8
41514     invoke-static {v7, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41516     monitor-exit p0
41517     :try_end_72
41518     .catchall {:try_start_59 .. :try_end_72} :catchall_7f
41520     :goto_72
41521     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41523     return-void
41525     :cond_76
41526     :try_start_76
41527     invoke-direct {p0, p1, v4}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;I)V
41528     :try_end_79
41529     .catchall {:try_start_76 .. :try_end_79} :catchall_7f
41531     const/4 v7, 0x1
41533     :try_start_7a
41534     invoke-interface {v5, p1, v7, v6}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
41535     :try_end_7d
41536     .catchall {:try_start_7a .. :try_end_7d} :catchall_7f
41537     .catch Landroid/os/RemoteException; {:try_start_7a .. :try_end_7d} :catch_ad
41538     .catch Ljava/lang/IllegalArgumentException; {:try_start_7a .. :try_end_7d} :catch_87
41540     :goto_7d
41541     :try_start_7d
41542     monitor-exit p0
41544     goto :goto_72
41546     :catchall_7f
41547     move-exception v7
41549     monitor-exit p0
41550     :try_end_81
41551     .catchall {:try_start_7d .. :try_end_81} :catchall_7f
41553     :try_start_81
41554     throw v7
41555     :try_end_82
41556     .catchall {:try_start_81 .. :try_end_82} :catchall_82
41558     :catchall_82
41559     move-exception v7
41561     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
41563     throw v7
41565     :catch_87
41566     move-exception v2
41568     :try_start_88
41569     const-string v7, "ActivityManager"
41571     new-instance v8, Ljava/lang/StringBuilder;
41573     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
41575     const-string v9, "Failed trying to unstop package "
41577     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41579     move-result-object v8
41581     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41583     move-result-object v8
41585     const-string v9, ": "
41587     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41589     move-result-object v8
41591     invoke-virtual {v8, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
41593     move-result-object v8
41595     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41597     move-result-object v8
41599     invoke-static {v7, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41600     :try_end_aa
41601     .catchall {:try_start_88 .. :try_end_aa} :catchall_7f
41603     goto :goto_7d
41605     :catch_ab
41606     move-exception v7
41608     goto :goto_56
41610     :catch_ad
41611     move-exception v7
41613     goto :goto_7d
41614 .end method
41616 .method foregroundTokenDied(Lcom/android/server/am/ActivityManagerService$ForegroundToken;)V
41617     .registers 7
41619     monitor-enter p0
41621     :try_start_1
41622     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
41624     monitor-enter v3
41625     :try_end_4
41626     .catchall {:try_start_1 .. :try_end_4} :catchall_29
41628     :try_start_4
41629     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
41631     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
41633     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
41635     move-result-object v0
41637     check-cast v0, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
41639     if-eq v0, p1, :cond_13
41641     monitor-exit v3
41642     :try_end_11
41643     .catchall {:try_start_4 .. :try_end_11} :catchall_38
41645     :try_start_11
41646     monitor-exit p0
41647     :try_end_12
41648     .catchall {:try_start_11 .. :try_end_12} :catchall_29
41650     :goto_12
41651     return-void
41653     :cond_13
41654     :try_start_13
41655     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
41657     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
41659     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->remove(I)V
41661     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
41663     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
41665     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
41667     move-result-object v1
41669     check-cast v1, Lcom/android/server/am/ProcessRecord;
41671     if-nez v1, :cond_2c
41673     monitor-exit v3
41674     :try_end_27
41675     .catchall {:try_start_13 .. :try_end_27} :catchall_38
41677     :try_start_27
41678     monitor-exit p0
41680     goto :goto_12
41682     :catchall_29
41683     move-exception v2
41685     monitor-exit p0
41686     :try_end_2b
41687     .catchall {:try_start_27 .. :try_end_2b} :catchall_29
41689     throw v2
41691     :cond_2c
41692     const/4 v2, 0x0
41694     :try_start_2d
41695     iput-object v2, v1, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
41697     const/4 v2, 0x0
41699     iput-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
41701     monitor-exit v3
41702     :try_end_33
41703     .catchall {:try_start_2d .. :try_end_33} :catchall_38
41705     :try_start_33
41706     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
41708     monitor-exit p0
41709     :try_end_37
41710     .catchall {:try_start_33 .. :try_end_37} :catchall_29
41712     goto :goto_12
41714     :catchall_38
41715     move-exception v2
41717     :try_start_39
41718     monitor-exit v3
41719     :try_end_3a
41720     .catchall {:try_start_39 .. :try_end_3a} :catchall_38
41722     :try_start_3a
41723     throw v2
41724     :try_end_3b
41725     .catchall {:try_start_3a .. :try_end_3b} :catchall_29
41726 .end method
41728 .method public getActivityClassForToken(Landroid/os/IBinder;)Landroid/content/ComponentName;
41729     .registers 4
41731     monitor-enter p0
41733     :try_start_1
41734     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41736     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
41738     move-result-object v0
41740     if-nez v0, :cond_c
41742     const/4 v1, 0x0
41744     monitor-exit p0
41746     :goto_b
41747     return-object v1
41749     :cond_c
41750     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
41752     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
41754     move-result-object v1
41756     monitor-exit p0
41758     goto :goto_b
41760     :catchall_14
41761     move-exception v1
41763     monitor-exit p0
41764     :try_end_16
41765     .catchall {:try_start_1 .. :try_end_16} :catchall_14
41767     throw v1
41768 .end method
41770 .method getActivityInfoForUser(Landroid/content/pm/ActivityInfo;I)Landroid/content/pm/ActivityInfo;
41771     .registers 6
41773     if-eqz p1, :cond_e
41775     const/4 v1, 0x1
41777     if-ge p2, v1, :cond_10
41779     iget-object v1, p1, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
41781     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
41783     const v2, 0x186a0
41785     if-ge v1, v2, :cond_10
41787     :cond_e
41788     move-object v0, p1
41790     :goto_f
41791     return-object v0
41793     :cond_10
41794     new-instance v0, Landroid/content/pm/ActivityInfo;
41796     invoke-direct {v0, p1}, Landroid/content/pm/ActivityInfo;-><init>(Landroid/content/pm/ActivityInfo;)V
41798     iget-object v1, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
41800     invoke-direct {p0, v1, p2}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
41802     move-result-object v1
41804     iput-object v1, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
41806     goto :goto_f
41807 .end method
41809 .method public getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
41810     .registers 4
41812     monitor-enter p0
41814     :try_start_1
41815     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
41817     move-result-object v0
41819     if-eqz v0, :cond_f
41821     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
41823     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
41825     move-result-object v1
41827     :goto_d
41828     monitor-exit p0
41830     return-object v1
41832     :cond_f
41833     const/4 v1, 0x0
41835     goto :goto_d
41837     :catchall_11
41838     move-exception v1
41840     monitor-exit p0
41841     :try_end_13
41842     .catchall {:try_start_1 .. :try_end_13} :catchall_11
41844     throw v1
41845 .end method
41847 .method public getCallingPackage(Landroid/os/IBinder;)Ljava/lang/String;
41848     .registers 4
41850     monitor-enter p0
41852     :try_start_1
41853     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
41855     move-result-object v0
41857     if-eqz v0, :cond_11
41859     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41861     if-eqz v1, :cond_11
41863     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
41865     iget-object v1, v1, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
41867     :goto_f
41868     monitor-exit p0
41870     return-object v1
41872     :cond_11
41873     const/4 v1, 0x0
41875     goto :goto_f
41877     :catchall_13
41878     move-exception v1
41880     monitor-exit p0
41881     :try_end_15
41882     .catchall {:try_start_1 .. :try_end_15} :catchall_13
41884     throw v1
41885 .end method
41887 .method public getConfiguration()Landroid/content/res/Configuration;
41888     .registers 3
41890     monitor-enter p0
41892     :try_start_1
41893     new-instance v0, Landroid/content/res/Configuration;
41895     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
41897     invoke-direct {v0, v1}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
41899     monitor-exit p0
41901     return-object v0
41903     :catchall_a
41904     move-exception v1
41906     monitor-exit p0
41907     :try_end_c
41908     .catchall {:try_start_1 .. :try_end_c} :catchall_a
41910     throw v1
41911 .end method
41913 .method public final getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Z)Landroid/app/IActivityManager$ContentProviderHolder;
41914     .registers 7
41916     const-string v1, "getContentProvider"
41918     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
41920     if-nez p1, :cond_25
41922     new-instance v1, Ljava/lang/StringBuilder;
41924     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
41926     const-string v2, "null IApplicationThread when getting content provider "
41928     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41930     move-result-object v1
41932     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41934     move-result-object v1
41936     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41938     move-result-object v0
41940     const-string v1, "ActivityManager"
41942     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41944     new-instance v1, Ljava/lang/SecurityException;
41946     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
41948     throw v1
41950     :cond_25
41951     const/4 v1, 0x0
41953     invoke-direct {p0, p1, p2, v1, p3}, Lcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;Z)Landroid/app/IActivityManager$ContentProviderHolder;
41955     move-result-object v1
41957     return-object v1
41958 .end method
41960 .method public getContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
41961     .registers 5
41963     const-string v0, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"
41965     const-string v1, "Do not have permission in call getContentProviderExternal()"
41967     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
41969     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
41971     move-result-object v0
41973     return-object v0
41974 .end method
41976 .method public getCurrentUser()Landroid/content/pm/UserInfo;
41977     .registers 4
41978     .annotation system Ldalvik/annotation/Throws;
41979         value = {
41980             Landroid/os/RemoteException;
41981         }
41982     .end annotation
41984     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
41986     move-result v0
41988     if-eqz v0, :cond_15
41990     invoke-static {}, Landroid/os/Process;->myUid()I
41992     move-result v1
41994     if-eq v0, v1, :cond_15
41996     const-string v1, "ActivityManager"
41998     const-string v2, "Trying to get user from unauthorized app"
42000     invoke-static {v1, v2}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
42002     const/4 v1, 0x0
42004     :goto_14
42005     return-object v1
42007     :cond_15
42008     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
42010     move-result-object v1
42012     iget v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
42014     invoke-interface {v1, v2}, Landroid/content/pm/IPackageManager;->getUser(I)Landroid/content/pm/UserInfo;
42016     move-result-object v1
42018     goto :goto_14
42019 .end method
42021 .method public getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
42022     .registers 4
42024     new-instance v0, Landroid/content/pm/ConfigurationInfo;
42026     invoke-direct {v0}, Landroid/content/pm/ConfigurationInfo;-><init>()V
42028     monitor-enter p0
42030     :try_start_6
42031     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42033     iget v1, v1, Landroid/content/res/Configuration;->touchscreen:I
42035     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqTouchScreen:I
42037     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42039     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
42041     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqKeyboardType:I
42043     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42045     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
42047     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqNavigation:I
42049     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42051     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
42053     const/4 v2, 0x2
42055     if-eq v1, v2, :cond_26
42057     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42059     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
42061     const/4 v2, 0x3
42063     if-ne v1, v2, :cond_2c
42065     :cond_26
42066     iget v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
42068     or-int/lit8 v1, v1, 0x2
42070     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
42072     :cond_2c
42073     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42075     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
42077     if-eqz v1, :cond_3f
42079     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
42081     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
42083     const/4 v2, 0x1
42085     if-eq v1, v2, :cond_3f
42087     iget v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
42089     or-int/lit8 v1, v1, 0x1
42091     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
42093     :cond_3f
42094     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->GL_ES_VERSION:I
42096     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqGlEsVersion:I
42098     monitor-exit p0
42100     return-object v0
42102     :catchall_45
42103     move-exception v1
42105     monitor-exit p0
42106     :try_end_47
42107     .catchall {:try_start_6 .. :try_end_47} :catchall_45
42109     throw v1
42110 .end method
42112 .method public getFrontActivityScreenCompatMode()I
42113     .registers 2
42115     const-string v0, "getFrontActivityScreenCompatMode"
42117     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
42119     monitor-enter p0
42121     :try_start_6
42122     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
42124     invoke-virtual {v0}, Lcom/android/server/am/CompatModePackages;->getFrontActivityScreenCompatModeLocked()I
42126     move-result v0
42128     monitor-exit p0
42130     return v0
42132     :catchall_e
42133     move-exception v0
42135     monitor-exit p0
42136     :try_end_10
42137     .catchall {:try_start_6 .. :try_end_10} :catchall_e
42139     throw v0
42140 .end method
42142 .method public getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
42143     .registers 28
42145     const-string v1, "getIntentSender"
42147     move-object/from16 v0, p0
42149     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
42151     if-eqz p6, :cond_61
42153     move-object/from16 v0, p6
42155     array-length v1, v0
42157     const/4 v2, 0x1
42159     if-ge v1, v2, :cond_17
42161     new-instance v1, Ljava/lang/IllegalArgumentException;
42163     const-string v2, "Intents array length must be >= 1"
42165     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42167     throw v1
42169     :cond_17
42170     const/4 v14, 0x0
42172     :goto_18
42173     move-object/from16 v0, p6
42175     array-length v1, v0
42177     if-ge v14, v1, :cond_4f
42179     aget-object v15, p6, v14
42181     if-eqz v15, :cond_4c
42183     invoke-virtual {v15}, Landroid/content/Intent;->hasFileDescriptors()Z
42185     move-result v1
42187     if-eqz v1, :cond_2f
42189     new-instance v1, Ljava/lang/IllegalArgumentException;
42191     const-string v2, "File descriptors passed in Intent"
42193     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42195     throw v1
42197     :cond_2f
42198     const/4 v1, 0x1
42200     move/from16 v0, p1
42202     if-ne v0, v1, :cond_45
42204     invoke-virtual {v15}, Landroid/content/Intent;->getFlags()I
42206     move-result v1
42208     const/high16 v2, 0x400
42210     and-int/2addr v1, v2
42212     if-eqz v1, :cond_45
42214     new-instance v1, Ljava/lang/IllegalArgumentException;
42216     const-string v2, "Can\'t use FLAG_RECEIVER_BOOT_UPGRADE here"
42218     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42220     throw v1
42222     :cond_45
42223     new-instance v1, Landroid/content/Intent;
42225     invoke-direct {v1, v15}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
42227     aput-object v1, p6, v14
42229     :cond_4c
42230     add-int/lit8 v14, v14, 0x1
42232     goto :goto_18
42234     :cond_4f
42235     if-eqz p7, :cond_61
42237     move-object/from16 v0, p7
42239     array-length v1, v0
42241     move-object/from16 v0, p6
42243     array-length v2, v0
42245     if-eq v1, v2, :cond_61
42247     new-instance v1, Ljava/lang/IllegalArgumentException;
42249     const-string v2, "Intent array length does not match resolvedTypes length"
42251     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42253     throw v1
42255     :cond_61
42256     if-eqz p9, :cond_71
42258     invoke-virtual/range {p9 .. p9}, Landroid/os/Bundle;->hasFileDescriptors()Z
42260     move-result v1
42262     if-eqz v1, :cond_71
42264     new-instance v1, Ljava/lang/IllegalArgumentException;
42266     const-string v2, "File descriptors passed in options"
42268     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42270     throw v1
42272     :cond_71
42273     monitor-enter p0
42275     :try_start_72
42276     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42277     :try_end_75
42278     .catchall {:try_start_72 .. :try_end_75} :catchall_eb
42280     move-result v12
42282     if-eqz v12, :cond_ee
42284     const/16 v1, 0x3e8
42286     if-eq v12, v1, :cond_ee
42288     :try_start_7c
42289     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
42291     move-result-object v1
42293     invoke-static {v12}, Landroid/os/UserId;->getUserId(I)I
42295     move-result v2
42297     move-object/from16 v0, p2
42299     invoke-interface {v1, v0, v2}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
42301     move-result v17
42303     move/from16 v0, v17
42305     invoke-static {v12, v0}, Landroid/os/UserId;->isSameApp(II)Z
42307     move-result v1
42309     if-nez v1, :cond_ee
42311     new-instance v1, Ljava/lang/StringBuilder;
42313     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
42315     const-string v2, "Permission Denial: getIntentSender() from pid="
42317     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42319     move-result-object v1
42321     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
42323     move-result v2
42325     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
42327     move-result-object v1
42329     const-string v2, ", uid="
42331     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42333     move-result-object v1
42335     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42337     move-result v2
42339     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
42341     move-result-object v1
42343     const-string v2, ", (need uid="
42345     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42347     move-result-object v1
42349     move/from16 v0, v17
42351     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
42353     move-result-object v1
42355     const-string v2, ")"
42357     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42359     move-result-object v1
42361     const-string v2, " is not allowed to send as package "
42363     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42365     move-result-object v1
42367     move-object/from16 v0, p2
42369     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42371     move-result-object v1
42373     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
42375     move-result-object v16
42377     const-string v1, "ActivityManager"
42379     move-object/from16 v0, v16
42381     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
42383     new-instance v1, Ljava/lang/SecurityException;
42385     move-object/from16 v0, v16
42387     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
42389     throw v1
42390     :try_end_e4
42391     .catchall {:try_start_7c .. :try_end_e4} :catchall_eb
42392     .catch Landroid/os/RemoteException; {:try_start_7c .. :try_end_e4} :catch_e4
42394     :catch_e4
42395     move-exception v13
42397     :try_start_e5
42398     new-instance v1, Ljava/lang/SecurityException;
42400     invoke-direct {v1, v13}, Ljava/lang/SecurityException;-><init>(Ljava/lang/Throwable;)V
42402     throw v1
42404     :catchall_eb
42405     move-exception v1
42407     monitor-exit p0
42408     :try_end_ed
42409     .catchall {:try_start_e5 .. :try_end_ed} :catchall_eb
42411     throw v1
42413     :cond_ee
42414     :try_start_ee
42415     invoke-static {}, Landroid/os/Binder;->getOrigCallingUid()I
42417     move-result v4
42419     move-object/from16 v1, p0
42421     move/from16 v2, p1
42423     move-object/from16 v3, p2
42425     move-object/from16 v5, p3
42427     move-object/from16 v6, p4
42429     move/from16 v7, p5
42431     move-object/from16 v8, p6
42433     move-object/from16 v9, p7
42435     move/from16 v10, p8
42437     move-object/from16 v11, p9
42439     invoke-virtual/range {v1 .. v11}, Lcom/android/server/am/ActivityManagerService;->getIntentSenderLocked(ILjava/lang/String;ILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
42440     :try_end_109
42441     .catchall {:try_start_ee .. :try_end_109} :catchall_eb
42442     .catch Landroid/os/RemoteException; {:try_start_ee .. :try_end_109} :catch_e4
42444     move-result-object v1
42446     :try_start_10a
42447     monitor-exit p0
42448     :try_end_10b
42449     .catchall {:try_start_10a .. :try_end_10b} :catchall_eb
42451     return-object v1
42452 .end method
42454 .method getIntentSenderLocked(ILjava/lang/String;ILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
42455     .registers 28
42457     const/4 v5, 0x0
42459     const/4 v3, 0x3
42461     move/from16 v0, p1
42463     if-ne v0, v3, :cond_1a
42465     move-object/from16 v0, p0
42467     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
42469     move-object/from16 v0, p4
42471     invoke-virtual {v3, v0}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
42473     move-result-object v5
42475     if-nez v5, :cond_14
42477     const/4 v14, 0x0
42479     :cond_13
42480     :goto_13
42481     return-object v14
42483     :cond_14
42484     iget-boolean v3, v5, Lcom/android/server/am/ActivityRecord;->finishing:Z
42486     if-eqz v3, :cond_1a
42488     const/4 v14, 0x0
42490     goto :goto_13
42492     :cond_1a
42493     const/high16 v3, 0x2000
42495     and-int v3, v3, p9
42497     if-eqz v3, :cond_93
42499     const/4 v13, 0x1
42501     :goto_21
42502     const/high16 v3, 0x1000
42504     and-int v3, v3, p9
42506     if-eqz v3, :cond_95
42508     const/4 v12, 0x1
42510     :goto_28
42511     const/high16 v3, 0x800
42513     and-int v3, v3, p9
42515     if-eqz v3, :cond_97
42517     const/16 v16, 0x1
42519     :goto_30
42520     const v3, -0x38000001
42522     and-int p9, p9, v3
42524     new-instance v2, Lcom/android/server/am/PendingIntentRecord$Key;
42526     move/from16 v3, p1
42528     move-object/from16 v4, p2
42530     move-object/from16 v6, p5
42532     move/from16 v7, p6
42534     move-object/from16 v8, p7
42536     move-object/from16 v9, p8
42538     move/from16 v10, p9
42540     move-object/from16 v11, p10
42542     invoke-direct/range {v2 .. v11}, Lcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)V
42544     move-object/from16 v0, p0
42546     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
42548     invoke-virtual {v3, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
42550     move-result-object v15
42552     check-cast v15, Ljava/lang/ref/WeakReference;
42554     if-eqz v15, :cond_9a
42556     invoke-virtual {v15}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
42558     move-result-object v3
42560     check-cast v3, Lcom/android/server/am/PendingIntentRecord;
42562     move-object v14, v3
42564     :goto_5d
42565     if-eqz v14, :cond_b4
42567     if-nez v12, :cond_aa
42569     if-eqz v16, :cond_13
42571     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42573     iget-object v3, v3, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
42575     if-eqz v3, :cond_79
42577     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42579     iget-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
42581     if-eqz p7, :cond_9c
42583     move-object/from16 v0, p7
42585     array-length v3, v0
42587     add-int/lit8 v3, v3, -0x1
42589     aget-object v3, p7, v3
42591     :goto_76
42592     invoke-virtual {v4, v3}, Landroid/content/Intent;->replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;
42594     :cond_79
42595     if-eqz p7, :cond_9e
42597     move-object/from16 v0, p7
42599     array-length v3, v0
42601     add-int/lit8 v3, v3, -0x1
42603     iget-object v4, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42605     iget-object v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
42607     aput-object v4, p7, v3
42609     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42611     move-object/from16 v0, p7
42613     iput-object v0, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
42615     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42617     move-object/from16 v0, p8
42619     iput-object v0, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allResolvedTypes:[Ljava/lang/String;
42621     goto :goto_13
42623     :cond_93
42624     const/4 v13, 0x0
42626     goto :goto_21
42628     :cond_95
42629     const/4 v12, 0x0
42631     goto :goto_28
42633     :cond_97
42634     const/16 v16, 0x0
42636     goto :goto_30
42638     :cond_9a
42639     const/4 v14, 0x0
42641     goto :goto_5d
42643     :cond_9c
42644     const/4 v3, 0x0
42646     goto :goto_76
42648     :cond_9e
42649     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42651     const/4 v4, 0x0
42653     iput-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
42655     iget-object v3, v14, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42657     const/4 v4, 0x0
42659     iput-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allResolvedTypes:[Ljava/lang/String;
42661     goto/16 :goto_13
42663     :cond_aa
42664     const/4 v3, 0x1
42666     iput-boolean v3, v14, Lcom/android/server/am/PendingIntentRecord;->canceled:Z
42668     move-object/from16 v0, p0
42670     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
42672     invoke-virtual {v3, v2}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
42674     :cond_b4
42675     if-nez v13, :cond_13
42677     new-instance v14, Lcom/android/server/am/PendingIntentRecord;
42679     move-object/from16 v0, p0
42681     move/from16 v1, p3
42683     invoke-direct {v14, v0, v2, v1}, Lcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V
42685     move-object/from16 v0, p0
42687     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
42689     iget-object v4, v14, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
42691     invoke-virtual {v3, v2, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42693     const/4 v3, 0x3
42695     move/from16 v0, p1
42697     if-ne v0, v3, :cond_13
42699     iget-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
42701     if-nez v3, :cond_d8
42703     new-instance v3, Ljava/util/HashSet;
42705     invoke-direct {v3}, Ljava/util/HashSet;-><init>()V
42707     iput-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
42709     :cond_d8
42710     iget-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
42712     iget-object v4, v14, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
42714     invoke-virtual {v3, v4}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
42716     goto/16 :goto_13
42717 .end method
42719 .method public getLaunchedFromUid(Landroid/os/IBinder;)I
42720     .registers 4
42722     invoke-static {p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
42724     move-result-object v0
42726     if-nez v0, :cond_8
42728     const/4 v1, -0x1
42730     :goto_7
42731     return v1
42733     :cond_8
42734     iget v1, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
42736     goto :goto_7
42737 .end method
42739 .method public getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
42740     .registers 15
42742     const/4 v5, 0x1
42744     const/4 v6, 0x0
42746     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
42748     const/4 v7, 0x6
42750     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
42752     move-result-wide v2
42754     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
42756     sget v7, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
42758     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
42760     move-result-wide v0
42762     invoke-static {}, Landroid/os/Process;->getFreeMemory()J
42764     move-result-wide v7
42766     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->availMem:J
42768     invoke-static {}, Landroid/os/Process;->getTotalMemory()J
42770     move-result-wide v7
42772     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->totalMem:J
42774     iput-wide v2, p1, Landroid/app/ActivityManager$MemoryInfo;->threshold:J
42776     iget-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->availMem:J
42778     sub-long v9, v0, v2
42780     const-wide/16 v11, 0x2
42782     div-long/2addr v9, v11
42784     add-long/2addr v9, v2
42786     cmp-long v4, v7, v9
42788     if-gez v4, :cond_4a
42790     move v4, v5
42792     :goto_2c
42793     iput-boolean v4, p1, Landroid/app/ActivityManager$MemoryInfo;->lowMemory:Z
42795     iput-wide v0, p1, Landroid/app/ActivityManager$MemoryInfo;->hiddenAppThreshold:J
42797     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
42799     const/4 v7, 0x5
42801     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
42803     move-result-wide v7
42805     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->secondaryServerThreshold:J
42807     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
42809     invoke-virtual {v4, v5}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
42811     move-result-wide v4
42813     iput-wide v4, p1, Landroid/app/ActivityManager$MemoryInfo;->visibleAppThreshold:J
42815     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
42817     invoke-virtual {v4, v6}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
42819     move-result-wide v4
42821     iput-wide v4, p1, Landroid/app/ActivityManager$MemoryInfo;->foregroundAppThreshold:J
42823     return-void
42825     :cond_4a
42826     move v4, v6
42828     goto :goto_2c
42829 .end method
42831 .method public getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
42832     .registers 6
42834     const-string v1, "getMyMemoryState"
42836     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
42838     monitor-enter p0
42840     :try_start_6
42841     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
42843     monitor-enter v2
42844     :try_end_9
42845     .catchall {:try_start_6 .. :try_end_9} :catchall_1e
42847     :try_start_9
42848     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
42850     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
42852     move-result v3
42854     invoke-virtual {v1, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
42856     move-result-object v0
42858     check-cast v0, Lcom/android/server/am/ProcessRecord;
42860     monitor-exit v2
42861     :try_end_16
42862     .catchall {:try_start_9 .. :try_end_16} :catchall_1b
42864     :try_start_16
42865     invoke-direct {p0, v0, p1}, Lcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
42867     monitor-exit p0
42868     :try_end_1a
42869     .catchall {:try_start_16 .. :try_end_1a} :catchall_1e
42871     return-void
42873     :catchall_1b
42874     move-exception v1
42876     :try_start_1c
42877     monitor-exit v2
42878     :try_end_1d
42879     .catchall {:try_start_1c .. :try_end_1d} :catchall_1b
42881     :try_start_1d
42882     throw v1
42884     :catchall_1e
42885     move-exception v1
42887     monitor-exit p0
42888     :try_end_20
42889     .catchall {:try_start_1d .. :try_end_20} :catchall_1e
42891     throw v1
42892 .end method
42894 .method public getPackageAskScreenCompat(Ljava/lang/String;)Z
42895     .registers 3
42897     const-string v0, "getPackageAskScreenCompat"
42899     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
42901     monitor-enter p0
42903     :try_start_6
42904     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
42906     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->getPackageAskCompatModeLocked(Ljava/lang/String;)Z
42908     move-result v0
42910     monitor-exit p0
42912     return v0
42914     :catchall_e
42915     move-exception v0
42917     monitor-exit p0
42918     :try_end_10
42919     .catchall {:try_start_6 .. :try_end_10} :catchall_e
42921     throw v0
42922 .end method
42924 .method public getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
42925     .registers 6
42927     const/4 v2, 0x0
42929     instance-of v3, p1, Lcom/android/server/am/PendingIntentRecord;
42931     if-nez v3, :cond_6
42933     :goto_5
42934     return-object v2
42936     :cond_6
42937     :try_start_6
42938     move-object v0, p1
42940     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
42942     move-object v1, v0
42944     iget-object v3, v1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
42946     iget-object v2, v3, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
42947     :try_end_e
42948     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_e} :catch_f
42950     goto :goto_5
42952     :catch_f
42953     move-exception v3
42955     goto :goto_5
42956 .end method
42958 .method public getPackageForToken(Landroid/os/IBinder;)Ljava/lang/String;
42959     .registers 4
42961     monitor-enter p0
42963     :try_start_1
42964     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
42966     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
42968     move-result-object v0
42970     if-nez v0, :cond_c
42972     const/4 v1, 0x0
42974     monitor-exit p0
42976     :goto_b
42977     return-object v1
42979     :cond_c
42980     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
42982     monitor-exit p0
42984     goto :goto_b
42986     :catchall_10
42987     move-exception v1
42989     monitor-exit p0
42990     :try_end_12
42991     .catchall {:try_start_1 .. :try_end_12} :catchall_10
42993     throw v1
42994 .end method
42996 .method public getPackageScreenCompatMode(Ljava/lang/String;)I
42997     .registers 3
42999     const-string v0, "getPackageScreenCompatMode"
43001     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43003     monitor-enter p0
43005     :try_start_6
43006     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
43008     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->getPackageScreenCompatModeLocked(Ljava/lang/String;)I
43010     move-result v0
43012     monitor-exit p0
43014     return v0
43016     :catchall_e
43017     move-exception v0
43019     monitor-exit p0
43020     :try_end_10
43021     .catchall {:try_start_6 .. :try_end_10} :catchall_e
43023     throw v0
43024 .end method
43026 .method public getProcessLimit()I
43027     .registers 2
43029     monitor-enter p0
43031     :try_start_1
43032     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
43034     monitor-exit p0
43036     return v0
43038     :catchall_5
43039     move-exception v0
43041     monitor-exit p0
43042     :try_end_7
43043     .catchall {:try_start_1 .. :try_end_7} :catchall_5
43045     throw v0
43046 .end method
43048 .method public getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
43049     .registers 6
43050     .annotation system Ldalvik/annotation/Throws;
43051         value = {
43052             Landroid/os/RemoteException;
43053         }
43054     .end annotation
43056     const-string v2, "getProcessMemoryInfo"
43058     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43060     array-length v2, p1
43062     new-array v1, v2, [Landroid/os/Debug$MemoryInfo;
43064     array-length v2, p1
43066     add-int/lit8 v0, v2, -0x1
43068     :goto_b
43069     if-ltz v0, :cond_1e
43071     new-instance v2, Landroid/os/Debug$MemoryInfo;
43073     invoke-direct {v2}, Landroid/os/Debug$MemoryInfo;-><init>()V
43075     aput-object v2, v1, v0
43077     aget v2, p1, v0
43079     aget-object v3, v1, v0
43081     invoke-static {v2, v3}, Landroid/os/Debug;->getMemoryInfo(ILandroid/os/Debug$MemoryInfo;)V
43083     add-int/lit8 v0, v0, -0x1
43085     goto :goto_b
43087     :cond_1e
43088     return-object v1
43089 .end method
43091 .method public getProcessPss([I)[J
43092     .registers 6
43093     .annotation system Ldalvik/annotation/Throws;
43094         value = {
43095             Landroid/os/RemoteException;
43096         }
43097     .end annotation
43099     const-string v2, "getProcessPss"
43101     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43103     array-length v2, p1
43105     new-array v1, v2, [J
43107     array-length v2, p1
43109     add-int/lit8 v0, v2, -0x1
43111     :goto_b
43112     if-ltz v0, :cond_18
43114     aget v2, p1, v0
43116     invoke-static {v2}, Landroid/os/Debug;->getPss(I)J
43118     move-result-wide v2
43120     aput-wide v2, v1, v0
43122     add-int/lit8 v0, v0, -0x1
43124     goto :goto_b
43126     :cond_18
43127     return-object v1
43128 .end method
43130 .method final getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
43131     .registers 8
43133     const/16 v4, 0x3e8
43135     if-ne p2, v4, :cond_2f
43137     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
43139     invoke-virtual {v4}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
43141     move-result-object v4
43143     invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
43145     move-result-object v3
43147     check-cast v3, Landroid/util/SparseArray;
43149     if-nez v3, :cond_14
43151     const/4 v4, 0x0
43153     :goto_13
43154     return-object v4
43156     :cond_14
43157     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
43159     move-result v0
43161     const/4 v1, 0x0
43163     :goto_19
43164     if-ge v1, v0, :cond_2f
43166     invoke-virtual {v3, v1}, Landroid/util/SparseArray;->keyAt(I)I
43168     move-result v4
43170     invoke-static {v4, p2}, Landroid/os/UserId;->isSameUser(II)Z
43172     move-result v4
43174     if-eqz v4, :cond_2c
43176     invoke-virtual {v3, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
43178     move-result-object v4
43180     check-cast v4, Lcom/android/server/am/ProcessRecord;
43182     goto :goto_13
43184     :cond_2c
43185     add-int/lit8 v1, v1, 0x1
43187     goto :goto_19
43189     :cond_2f
43190     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
43192     invoke-virtual {v4, p1, p2}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
43194     move-result-object v2
43196     check-cast v2, Lcom/android/server/am/ProcessRecord;
43198     move-object v4, v2
43200     goto :goto_13
43201 .end method
43203 .method public getProcessesInErrorState()Ljava/util/List;
43204     .registers 9
43205     .annotation system Ldalvik/annotation/Signature;
43206         value = {
43207             "()",
43208             "Ljava/util/List",
43209             "<",
43210             "Landroid/app/ActivityManager$ProcessErrorStateInfo;",
43211             ">;"
43212         }
43213     .end annotation
43215     const-string v5, "getProcessesInErrorState"
43217     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43219     const/4 v1, 0x0
43221     monitor-enter p0
43223     :try_start_7
43224     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
43226     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
43227     :try_end_c
43228     .catchall {:try_start_7 .. :try_end_c} :catchall_7b
43230     move-result v5
43232     add-int/lit8 v3, v5, -0x1
43234     move-object v2, v1
43236     :goto_10
43237     if-ltz v3, :cond_79
43239     :try_start_12
43240     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
43242     invoke-virtual {v5, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
43244     move-result-object v0
43246     check-cast v0, Lcom/android/server/am/ProcessRecord;
43248     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
43250     if-eqz v5, :cond_77
43252     iget-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
43254     if-nez v5, :cond_26
43256     iget-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
43258     if-eqz v5, :cond_77
43260     :cond_26
43261     const/4 v4, 0x0
43263     iget-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
43265     if-eqz v5, :cond_3e
43267     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
43269     :cond_2d
43270     :goto_2d
43271     if-eqz v4, :cond_45
43273     if-nez v2, :cond_81
43275     new-instance v1, Ljava/util/ArrayList;
43277     const/4 v5, 0x1
43279     invoke-direct {v1, v5}, Ljava/util/ArrayList;-><init>(I)V
43280     :try_end_37
43281     .catchall {:try_start_12 .. :try_end_37} :catchall_7e
43283     :goto_37
43284     :try_start_37
43285     invoke-interface {v1, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
43286     :try_end_3a
43287     .catchall {:try_start_37 .. :try_end_3a} :catchall_7b
43289     :goto_3a
43290     add-int/lit8 v3, v3, -0x1
43292     move-object v2, v1
43294     goto :goto_10
43296     :cond_3e
43297     :try_start_3e
43298     iget-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
43300     if-eqz v5, :cond_2d
43302     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
43304     goto :goto_2d
43306     :cond_45
43307     const-string v5, "ActivityManager"
43309     new-instance v6, Ljava/lang/StringBuilder;
43311     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
43313     const-string v7, "Missing app error report, app = "
43315     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43317     move-result-object v6
43319     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
43321     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43323     move-result-object v6
43325     const-string v7, " crashing = "
43327     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43329     move-result-object v6
43331     iget-boolean v7, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
43333     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
43335     move-result-object v6
43337     const-string v7, " notResponding = "
43339     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43341     move-result-object v6
43343     iget-boolean v7, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
43345     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
43347     move-result-object v6
43349     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43351     move-result-object v6
43353     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
43355     :cond_77
43356     move-object v1, v2
43358     goto :goto_3a
43360     :cond_79
43361     monitor-exit p0
43362     :try_end_7a
43363     .catchall {:try_start_3e .. :try_end_7a} :catchall_7e
43365     return-object v2
43367     :catchall_7b
43368     move-exception v5
43370     :goto_7c
43371     :try_start_7c
43372     monitor-exit p0
43373     :try_end_7d
43374     .catchall {:try_start_7c .. :try_end_7d} :catchall_7b
43376     throw v5
43378     :catchall_7e
43379     move-exception v5
43381     move-object v1, v2
43383     goto :goto_7c
43385     :cond_81
43386     move-object v1, v2
43388     goto :goto_37
43389 .end method
43391 .method public getProviderMimeType(Landroid/net/Uri;)Ljava/lang/String;
43392     .registers 11
43394     const/4 v6, 0x0
43396     const-string v5, "getProviderMimeType"
43398     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43400     invoke-virtual {p1}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
43402     move-result-object v4
43404     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
43406     move-result-wide v2
43408     const/4 v1, 0x0
43410     const/4 v5, 0x0
43412     :try_start_10
43413     invoke-direct {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
43415     move-result-object v1
43417     if-eqz v1, :cond_52
43419     iget-object v5, v1, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
43421     invoke-interface {v5, p1}, Landroid/content/IContentProvider;->getType(Landroid/net/Uri;)Ljava/lang/String;
43422     :try_end_1b
43423     .catchall {:try_start_10 .. :try_end_1b} :catchall_48
43424     .catch Landroid/os/RemoteException; {:try_start_10 .. :try_end_1b} :catch_25
43426     move-result-object v5
43428     if-eqz v1, :cond_21
43430     invoke-direct {p0, v4, v6}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
43432     :cond_21
43433     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
43435     :goto_24
43436     return-object v5
43438     :catch_25
43439     move-exception v0
43441     :try_start_26
43442     const-string v5, "ActivityManager"
43444     new-instance v7, Ljava/lang/StringBuilder;
43446     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
43448     const-string v8, "Content provider dead retrieving "
43450     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43452     move-result-object v7
43454     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
43456     move-result-object v7
43458     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43460     move-result-object v7
43462     invoke-static {v5, v7, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
43463     :try_end_3e
43464     .catchall {:try_start_26 .. :try_end_3e} :catchall_48
43466     if-eqz v1, :cond_43
43468     invoke-direct {p0, v4, v6}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
43470     :cond_43
43471     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
43473     move-object v5, v6
43475     goto :goto_24
43477     :catchall_48
43478     move-exception v5
43480     if-eqz v1, :cond_4e
43482     invoke-direct {p0, v4, v6}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
43484     :cond_4e
43485     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
43487     throw v5
43489     :cond_52
43490     if-eqz v1, :cond_57
43492     invoke-direct {p0, v4, v6}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
43494     :cond_57
43495     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
43497     move-object v5, v6
43499     goto :goto_24
43500 .end method
43502 .method public getRecentTasks(II)Ljava/util/List;
43503     .registers 15
43504     .annotation system Ldalvik/annotation/Signature;
43505         value = {
43506             "(II)",
43507             "Ljava/util/List",
43508             "<",
43509             "Landroid/app/ActivityManager$RecentTaskInfo;",
43510             ">;"
43511         }
43512     .end annotation
43514     const/4 v3, 0x0
43516     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
43518     move-result v1
43520     const/16 v9, 0x3e8
43522     if-ne v1, v9, :cond_42
43524     iget v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
43526     :goto_b
43527     monitor-enter p0
43529     :try_start_c
43530     const-string v9, "android.permission.GET_TASKS"
43532     const-string v10, "getRecentTasks()"
43534     invoke-virtual {p0, v9, v10}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
43536     const-string v9, "android.permission.GET_DETAILED_TASKS"
43538     invoke-virtual {p0, v9}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
43540     move-result v9
43542     if-nez v9, :cond_1c
43544     const/4 v3, 0x1
43546     :cond_1c
43547     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
43549     move-result-object v5
43551     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
43553     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
43555     move-result v0
43557     new-instance v6, Ljava/util/ArrayList;
43559     if-ge p1, v0, :cond_47
43561     move v9, p1
43563     :goto_2b
43564     invoke-direct {v6, v9}, Ljava/util/ArrayList;-><init>(I)V
43566     const/4 v4, 0x0
43568     :goto_2f
43569     if-ge v4, v0, :cond_b9
43571     if-lez p1, :cond_b9
43573     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
43575     invoke-virtual {v9, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
43577     move-result-object v8
43579     check-cast v8, Lcom/android/server/am/TaskRecord;
43581     iget v9, v8, Lcom/android/server/am/TaskRecord;->userId:I
43582     :try_end_3d
43583     .catchall {:try_start_c .. :try_end_3d} :catchall_bb
43585     if-eq v9, v2, :cond_49
43587     :cond_3f
43588     :goto_3f
43589     add-int/lit8 v4, v4, 0x1
43591     goto :goto_2f
43593     :cond_42
43594     invoke-static {v1}, Landroid/os/UserId;->getUserId(I)I
43596     move-result v2
43598     goto :goto_b
43600     :cond_47
43601     move v9, v0
43603     goto :goto_2b
43605     :cond_49
43606     if-eqz v4, :cond_5e
43608     and-int/lit8 v9, p2, 0x1
43610     if-nez v9, :cond_5e
43612     :try_start_4f
43613     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
43615     if-eqz v9, :cond_5e
43617     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
43619     invoke-virtual {v9}, Landroid/content/Intent;->getFlags()I
43621     move-result v9
43623     const/high16 v10, 0x80
43625     and-int/2addr v9, v10
43627     if-nez v9, :cond_3f
43629     :cond_5e
43630     new-instance v7, Landroid/app/ActivityManager$RecentTaskInfo;
43632     invoke-direct {v7}, Landroid/app/ActivityManager$RecentTaskInfo;-><init>()V
43634     iget v9, v8, Lcom/android/server/am/TaskRecord;->numActivities:I
43636     if-lez v9, :cond_a5
43638     iget v9, v8, Lcom/android/server/am/TaskRecord;->taskId:I
43640     :goto_69
43641     iput v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->id:I
43643     iget v9, v8, Lcom/android/server/am/TaskRecord;->taskId:I
43645     iput v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->persistentId:I
43647     new-instance v10, Landroid/content/Intent;
43649     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
43651     if-eqz v9, :cond_a7
43653     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
43655     :goto_77
43656     invoke-direct {v10, v9}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
43658     iput-object v10, v7, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
43660     if-nez v3, :cond_86
43662     iget-object v10, v7, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
43664     const/4 v9, 0x0
43666     check-cast v9, Landroid/os/Bundle;
43668     invoke-virtual {v10, v9}, Landroid/content/Intent;->replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;
43670     :cond_86
43671     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->origActivity:Landroid/content/ComponentName;
43673     iput-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
43675     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->lastDescription:Ljava/lang/CharSequence;
43677     iput-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->description:Ljava/lang/CharSequence;
43678     :try_end_8e
43679     .catchall {:try_start_4f .. :try_end_8e} :catchall_bb
43681     and-int/lit8 v9, p2, 0x2
43683     if-eqz v9, :cond_9f
43685     :try_start_92
43686     iget-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
43688     if-eqz v9, :cond_aa
43690     iget-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
43692     const/4 v10, 0x0
43694     invoke-interface {v5, v9, v10, v2}, Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
43695     :try_end_9c
43696     .catchall {:try_start_92 .. :try_end_9c} :catchall_bb
43697     .catch Landroid/os/RemoteException; {:try_start_92 .. :try_end_9c} :catch_be
43699     move-result-object v9
43701     if-eqz v9, :cond_3f
43703     :cond_9f
43704     :goto_9f
43705     :try_start_9f
43706     invoke-virtual {v6, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
43708     add-int/lit8 p1, p1, -0x1
43710     goto :goto_3f
43712     :cond_a5
43713     const/4 v9, -0x1
43715     goto :goto_69
43717     :cond_a7
43718     iget-object v9, v8, Lcom/android/server/am/TaskRecord;->affinityIntent:Landroid/content/Intent;
43719     :try_end_a9
43720     .catchall {:try_start_9f .. :try_end_a9} :catchall_bb
43722     goto :goto_77
43724     :cond_aa
43725     :try_start_aa
43726     iget-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
43728     if-eqz v9, :cond_9f
43730     iget-object v9, v7, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
43732     const/4 v10, 0x0
43734     const/4 v11, 0x0
43736     invoke-interface {v5, v9, v10, v11, v2}, Landroid/content/pm/IPackageManager;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
43737     :try_end_b5
43738     .catchall {:try_start_aa .. :try_end_b5} :catchall_bb
43739     .catch Landroid/os/RemoteException; {:try_start_aa .. :try_end_b5} :catch_be
43741     move-result-object v9
43743     if-nez v9, :cond_9f
43745     goto :goto_3f
43747     :cond_b9
43748     :try_start_b9
43749     monitor-exit p0
43751     return-object v6
43753     :catchall_bb
43754     move-exception v9
43756     monitor-exit p0
43757     :try_end_bd
43758     .catchall {:try_start_b9 .. :try_end_bd} :catchall_bb
43760     throw v9
43762     :catch_be
43763     move-exception v9
43765     goto :goto_9f
43766 .end method
43768 .method final getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
43769     .registers 4
43771     const/4 v1, 0x0
43773     if-nez p1, :cond_4
43775     :cond_3
43776     :goto_3
43777     return-object v1
43779     :cond_4
43780     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I
43782     move-result v0
43784     if-ltz v0, :cond_3
43786     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
43788     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
43790     move-result-object v1
43792     check-cast v1, Lcom/android/server/am/ProcessRecord;
43794     goto :goto_3
43795 .end method
43797 .method public getRequestedOrientation(Landroid/os/IBinder;)I
43798     .registers 5
43800     monitor-enter p0
43802     :try_start_1
43803     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
43805     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
43807     move-result-object v0
43809     if-nez v0, :cond_c
43811     const/4 v1, -0x1
43813     monitor-exit p0
43815     :goto_b
43816     return v1
43818     :cond_c
43819     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
43821     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
43823     invoke-virtual {v1, v2}, Lcom/android/server/wm/WindowManagerService;->getAppOrientation(Landroid/view/IApplicationToken;)I
43825     move-result v1
43827     monitor-exit p0
43829     goto :goto_b
43831     :catchall_16
43832     move-exception v1
43834     monitor-exit p0
43835     :try_end_18
43836     .catchall {:try_start_1 .. :try_end_18} :catchall_16
43838     throw v1
43839 .end method
43841 .method public getRunningAppProcesses()Ljava/util/List;
43842     .registers 10
43843     .annotation system Ldalvik/annotation/Signature;
43844         value = {
43845             "()",
43846             "Ljava/util/List",
43847             "<",
43848             "Landroid/app/ActivityManager$RunningAppProcessInfo;",
43849             ">;"
43850         }
43851     .end annotation
43853     const-string v6, "getRunningAppProcesses"
43855     invoke-virtual {p0, v6}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43857     const/4 v4, 0x0
43859     monitor-enter p0
43861     :try_start_7
43862     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
43864     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
43865     :try_end_c
43866     .catchall {:try_start_7 .. :try_end_c} :catchall_82
43868     move-result v6
43870     add-int/lit8 v2, v6, -0x1
43872     move-object v5, v4
43874     :goto_10
43875     if-ltz v2, :cond_80
43877     :try_start_12
43878     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
43880     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
43882     move-result-object v0
43884     check-cast v0, Lcom/android/server/am/ProcessRecord;
43886     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
43888     if-eqz v6, :cond_86
43890     iget-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
43892     if-nez v6, :cond_86
43894     iget-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
43896     if-nez v6, :cond_86
43898     new-instance v1, Landroid/app/ActivityManager$RunningAppProcessInfo;
43900     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
43902     iget v7, v0, Lcom/android/server/am/ProcessRecord;->pid:I
43904     invoke-virtual {v0}, Lcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
43906     move-result-object v8
43908     invoke-direct {v1, v6, v7, v8}, Landroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Ljava/lang/String;I[Ljava/lang/String;)V
43910     invoke-direct {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
43912     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
43914     instance-of v6, v6, Lcom/android/server/am/ProcessRecord;
43916     if-eqz v6, :cond_67
43918     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
43920     check-cast v6, Lcom/android/server/am/ProcessRecord;
43922     iget v6, v6, Lcom/android/server/am/ProcessRecord;->pid:I
43924     iput v6, v1, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonPid:I
43926     iget v6, v0, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
43928     const/4 v7, 0x0
43930     invoke-static {v6, v7}, Lcom/android/server/am/ActivityManagerService;->oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
43932     move-result v6
43934     iput v6, v1, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonImportance:I
43936     :cond_4d
43937     :goto_4d
43938     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
43940     instance-of v6, v6, Landroid/content/ComponentName;
43942     if-eqz v6, :cond_59
43944     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
43946     check-cast v6, Landroid/content/ComponentName;
43948     iput-object v6, v1, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonComponent:Landroid/content/ComponentName;
43950     :cond_59
43951     if-nez v5, :cond_84
43953     new-instance v4, Ljava/util/ArrayList;
43955     invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
43956     :try_end_60
43957     .catchall {:try_start_12 .. :try_end_60} :catchall_7c
43959     :goto_60
43960     :try_start_60
43961     invoke-interface {v4, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
43962     :try_end_63
43963     .catchall {:try_start_60 .. :try_end_63} :catchall_82
43965     :goto_63
43966     add-int/lit8 v2, v2, -0x1
43968     move-object v5, v4
43970     goto :goto_10
43972     :cond_67
43973     :try_start_67
43974     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
43976     instance-of v6, v6, Lcom/android/server/am/ActivityRecord;
43978     if-eqz v6, :cond_4d
43980     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
43982     check-cast v3, Lcom/android/server/am/ActivityRecord;
43984     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
43986     if-eqz v6, :cond_4d
43988     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
43990     iget v6, v6, Lcom/android/server/am/ProcessRecord;->pid:I
43992     iput v6, v1, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonPid:I
43993     :try_end_7b
43994     .catchall {:try_start_67 .. :try_end_7b} :catchall_7c
43996     goto :goto_4d
43998     :catchall_7c
43999     move-exception v6
44001     move-object v4, v5
44003     :goto_7e
44004     :try_start_7e
44005     monitor-exit p0
44006     :try_end_7f
44007     .catchall {:try_start_7e .. :try_end_7f} :catchall_82
44009     throw v6
44011     :cond_80
44012     :try_start_80
44013     monitor-exit p0
44014     :try_end_81
44015     .catchall {:try_start_80 .. :try_end_81} :catchall_7c
44017     return-object v5
44019     :catchall_82
44020     move-exception v6
44022     goto :goto_7e
44024     :cond_84
44025     move-object v4, v5
44027     goto :goto_60
44029     :cond_86
44030     move-object v4, v5
44032     goto :goto_63
44033 .end method
44035 .method public getRunningExternalApplications()Ljava/util/List;
44036     .registers 14
44037     .annotation system Ldalvik/annotation/Signature;
44038         value = {
44039             "()",
44040             "Ljava/util/List",
44041             "<",
44042             "Landroid/content/pm/ApplicationInfo;",
44043             ">;"
44044         }
44045     .end annotation
44047     const-string v11, "getRunningExternalApplications"
44049     invoke-virtual {p0, v11}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
44051     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
44053     move-result-object v10
44055     new-instance v9, Ljava/util/ArrayList;
44057     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
44059     if-eqz v10, :cond_67
44061     invoke-interface {v10}, Ljava/util/List;->size()I
44063     move-result v11
44065     if-lez v11, :cond_67
44067     new-instance v2, Ljava/util/HashSet;
44069     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
44071     invoke-interface {v10}, Ljava/util/List;->iterator()Ljava/util/Iterator;
44073     move-result-object v3
44075     :cond_1f
44076     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
44078     move-result v11
44080     if-eqz v11, :cond_3d
44082     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
44084     move-result-object v0
44086     check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo;
44088     iget-object v11, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
44090     if-eqz v11, :cond_1f
44092     iget-object v1, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
44094     array-length v6, v1
44096     const/4 v4, 0x0
44098     :goto_33
44099     if-ge v4, v6, :cond_1f
44101     aget-object v7, v1, v4
44103     invoke-interface {v2, v7}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
44105     add-int/lit8 v4, v4, 0x1
44107     goto :goto_33
44109     :cond_3d
44110     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
44112     move-result-object v8
44114     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
44116     move-result-object v3
44118     :cond_45
44119     :goto_45
44120     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
44122     move-result v11
44124     if-eqz v11, :cond_67
44126     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
44128     move-result-object v7
44130     check-cast v7, Ljava/lang/String;
44132     const/4 v11, 0x0
44134     :try_start_52
44135     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
44137     move-result v12
44139     invoke-interface {v8, v7, v11, v12}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
44141     move-result-object v5
44143     iget v11, v5, Landroid/content/pm/ApplicationInfo;->flags:I
44145     const/high16 v12, 0x4
44147     and-int/2addr v11, v12
44149     if-eqz v11, :cond_45
44151     invoke-interface {v9, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
44152     :try_end_64
44153     .catch Landroid/os/RemoteException; {:try_start_52 .. :try_end_64} :catch_65
44155     goto :goto_45
44157     :catch_65
44158     move-exception v11
44160     goto :goto_45
44162     :cond_67
44163     return-object v9
44164 .end method
44166 .method public getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
44167     .registers 8
44169     const-string v5, "getRunningServiceControlPanel"
44171     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
44173     monitor-enter p0
44175     :try_start_6
44176     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44178     move-result v5
44180     invoke-static {v5}, Landroid/os/UserId;->getUserId(I)I
44182     move-result v4
44184     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
44186     invoke-virtual {v5, p1, v4}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getServiceByName(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
44188     move-result-object v3
44190     if-eqz v3, :cond_4a
44192     iget-object v5, v3, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
44194     invoke-virtual {v5}, Ljava/util/HashMap;->values()Ljava/util/Collection;
44196     move-result-object v5
44198     invoke-interface {v5}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
44200     move-result-object v2
44202     :cond_20
44203     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
44205     move-result v5
44207     if-eqz v5, :cond_4a
44209     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
44211     move-result-object v0
44213     check-cast v0, Ljava/util/ArrayList;
44215     const/4 v1, 0x0
44217     :goto_2d
44218     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
44220     move-result v5
44222     if-ge v1, v5, :cond_20
44224     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44226     move-result-object v5
44228     check-cast v5, Lcom/android/server/am/ConnectionRecord;
44230     iget-object v5, v5, Lcom/android/server/am/ConnectionRecord;->clientIntent:Landroid/app/PendingIntent;
44232     if-eqz v5, :cond_47
44234     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44236     move-result-object v5
44238     check-cast v5, Lcom/android/server/am/ConnectionRecord;
44240     iget-object v5, v5, Lcom/android/server/am/ConnectionRecord;->clientIntent:Landroid/app/PendingIntent;
44242     monitor-exit p0
44244     :goto_46
44245     return-object v5
44247     :cond_47
44248     add-int/lit8 v1, v1, 0x1
44250     goto :goto_2d
44252     :cond_4a
44253     monitor-exit p0
44255     const/4 v5, 0x0
44257     goto :goto_46
44259     :catchall_4d
44260     move-exception v5
44262     monitor-exit p0
44263     :try_end_4f
44264     .catchall {:try_start_6 .. :try_end_4f} :catchall_4d
44266     throw v5
44267 .end method
44269 .method public getServices(II)Ljava/util/List;
44270     .registers 11
44271     .annotation system Ldalvik/annotation/Signature;
44272         value = {
44273             "(II)",
44274             "Ljava/util/List",
44275             "<",
44276             "Landroid/app/ActivityManager$RunningServiceInfo;",
44277             ">;"
44278         }
44279     .end annotation
44281     const-string v6, "getServices"
44283     invoke-virtual {p0, v6}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
44285     monitor-enter p0
44287     :try_start_6
44288     new-instance v4, Ljava/util/ArrayList;
44290     invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
44292     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44294     move-result v6
44296     invoke-static {v6}, Landroid/os/UserId;->getUserId(I)I
44298     move-result v5
44300     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
44302     invoke-virtual {v6, v5}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
44304     move-result-object v6
44306     invoke-interface {v6}, Ljava/util/Collection;->size()I
44308     move-result v6
44310     if-lez v6, :cond_46
44312     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mServiceMap:Lcom/android/server/am/ActivityManagerService$ServiceMap;
44314     invoke-virtual {v6, v5}, Lcom/android/server/am/ActivityManagerService$ServiceMap;->getAllServices(I)Ljava/util/Collection;
44316     move-result-object v6
44318     invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
44320     move-result-object v2
44322     :goto_29
44323     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
44325     move-result v6
44327     if-eqz v6, :cond_46
44329     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
44331     move-result v6
44333     if-ge v6, p1, :cond_46
44335     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
44337     move-result-object v6
44339     check-cast v6, Lcom/android/server/am/ServiceRecord;
44341     invoke-virtual {p0, v6}, Lcom/android/server/am/ActivityManagerService;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
44343     move-result-object v6
44345     invoke-virtual {v4, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44347     goto :goto_29
44349     :catchall_43
44350     move-exception v6
44352     monitor-exit p0
44353     :try_end_45
44354     .catchall {:try_start_6 .. :try_end_45} :catchall_43
44356     throw v6
44358     :cond_46
44359     const/4 v0, 0x0
44361     :goto_47
44362     :try_start_47
44363     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
44365     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
44367     move-result v6
44369     if-ge v0, v6, :cond_6b
44371     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
44373     move-result v6
44375     if-ge v6, p1, :cond_6b
44377     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
44379     invoke-virtual {v6, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44381     move-result-object v3
44383     check-cast v3, Lcom/android/server/am/ServiceRecord;
44385     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
44387     move-result-object v1
44389     iget-wide v6, v3, Lcom/android/server/am/ServiceRecord;->nextRestartTime:J
44391     iput-wide v6, v1, Landroid/app/ActivityManager$RunningServiceInfo;->restarting:J
44393     invoke-virtual {v4, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44395     add-int/lit8 v0, v0, 0x1
44397     goto :goto_47
44399     :cond_6b
44400     monitor-exit p0
44401     :try_end_6c
44402     .catchall {:try_start_47 .. :try_end_6c} :catchall_43
44404     return-object v4
44405 .end method
44407 .method public getTaskForActivity(Landroid/os/IBinder;Z)I
44408     .registers 4
44410     monitor-enter p0
44412     :try_start_1
44413     invoke-virtual {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
44415     move-result v0
44417     monitor-exit p0
44419     return v0
44421     :catchall_7
44422     move-exception v0
44424     monitor-exit p0
44425     :try_end_9
44426     .catchall {:try_start_1 .. :try_end_9} :catchall_7
44428     throw v0
44429 .end method
44431 .method getTaskForActivityLocked(Landroid/os/IBinder;Z)I
44432     .registers 9
44434     const/4 v4, -0x1
44436     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44438     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
44440     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
44442     move-result v0
44444     const/4 v2, 0x0
44446     const/4 v1, 0x0
44448     :goto_b
44449     if-ge v1, v0, :cond_25
44451     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44453     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
44455     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44457     move-result-object v3
44459     check-cast v3, Lcom/android/server/am/ActivityRecord;
44461     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
44463     if-ne v5, p1, :cond_26
44465     if-eqz p2, :cond_21
44467     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44469     if-eq v2, v5, :cond_25
44471     :cond_21
44472     iget-object v4, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44474     iget v4, v4, Lcom/android/server/am/TaskRecord;->taskId:I
44476     :cond_25
44477     return v4
44479     :cond_26
44480     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44482     add-int/lit8 v1, v1, 0x1
44484     goto :goto_b
44485 .end method
44487 .method public getTaskThumbnails(I)Landroid/app/ActivityManager$TaskThumbnails;
44488     .registers 5
44490     monitor-enter p0
44492     :try_start_1
44493     const-string v1, "android.permission.READ_FRAME_BUFFER"
44495     const-string v2, "getTaskThumbnails()"
44497     invoke-virtual {p0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
44499     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
44501     move-result-object v0
44503     if-eqz v0, :cond_16
44505     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44507     invoke-virtual {v1, v0}, Lcom/android/server/am/ActivityStack;->getTaskThumbnailsLocked(Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$TaskThumbnails;
44509     move-result-object v1
44511     monitor-exit p0
44513     :goto_15
44514     return-object v1
44516     :cond_16
44517     monitor-exit p0
44519     const/4 v1, 0x0
44521     goto :goto_15
44523     :catchall_19
44524     move-exception v1
44526     monitor-exit p0
44527     :try_end_1b
44528     .catchall {:try_start_1 .. :try_end_1b} :catchall_19
44530     throw v1
44531 .end method
44533 .method public getTasks(IILandroid/app/IThumbnailReceiver;)Ljava/util/List;
44534     .registers 26
44536     new-instance v10, Ljava/util/ArrayList;
44538     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
44540     const/4 v15, 0x0
44542     const/16 v21, 0x0
44544     const/16 v20, 0x0
44546     monitor-enter p0
44548     :try_start_b
44549     const-string v1, "android.permission.GET_TASKS"
44551     move-object/from16 v0, p0
44553     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
44554     :try_end_12
44555     .catchall {:try_start_b .. :try_end_12} :catchall_56
44557     move-result v1
44559     if-eqz v1, :cond_59
44561     if-eqz p3, :cond_1a
44563     :try_start_17
44564     invoke-interface/range {p3 .. p3}, Landroid/app/IThumbnailReceiver;->finished()V
44565     :try_end_1a
44566     .catchall {:try_start_17 .. :try_end_1a} :catchall_56
44567     .catch Landroid/os/RemoteException; {:try_start_17 .. :try_end_1a} :catch_18e
44569     :cond_1a
44570     :goto_1a
44571     :try_start_1a
44572     new-instance v1, Ljava/lang/StringBuilder;
44574     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
44576     const-string v2, "Permission Denial: getTasks() from pid="
44578     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44580     move-result-object v1
44582     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
44584     move-result v2
44586     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44588     move-result-object v1
44590     const-string v2, ", uid="
44592     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44594     move-result-object v1
44596     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44598     move-result v2
44600     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44602     move-result-object v1
44604     const-string v2, " requires "
44606     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44608     move-result-object v1
44610     const-string v2, "android.permission.GET_TASKS"
44612     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44614     move-result-object v1
44616     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44618     move-result-object v11
44620     const-string v1, "ActivityManager"
44622     invoke-static {v1, v11}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44624     new-instance v1, Ljava/lang/SecurityException;
44626     invoke-direct {v1, v11}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44628     throw v1
44630     :catchall_56
44631     move-exception v1
44633     :goto_57
44634     monitor-exit p0
44635     :try_end_58
44636     .catchall {:try_start_1a .. :try_end_58} :catchall_56
44638     throw v1
44640     :cond_59
44641     :try_start_59
44642     move-object/from16 v0, p0
44644     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44646     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
44648     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
44650     move-result v1
44652     add-int/lit8 v17, v1, -0x1
44654     if-ltz v17, :cond_148
44656     move-object/from16 v0, p0
44658     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44660     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
44662     move/from16 v0, v17
44664     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44666     move-result-object v1
44668     check-cast v1, Lcom/android/server/am/ActivityRecord;
44669     :try_end_75
44670     .catchall {:try_start_59 .. :try_end_75} :catchall_56
44672     move-object v12, v1
44674     :goto_76
44675     const/16 v19, 0x0
44677     const/4 v8, 0x0
44679     const/4 v13, 0x0
44681     const/4 v14, 0x0
44683     move-object/from16 v16, v15
44685     :goto_7d
44686     if-ltz v17, :cond_159
44688     if-lez p1, :cond_159
44690     move-object/from16 v18, v12
44692     add-int/lit8 v17, v17, -0x1
44694     if-ltz v17, :cond_14b
44696     :try_start_87
44697     move-object/from16 v0, p0
44699     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
44701     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
44703     move/from16 v0, v17
44705     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44707     move-result-object v1
44709     check-cast v1, Lcom/android/server/am/ActivityRecord;
44711     move-object v12, v1
44713     :goto_96
44714     if-eqz v19, :cond_aa
44716     move-object/from16 v0, v19
44718     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
44720     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->INITIALIZING:Lcom/android/server/am/ActivityStack$ActivityState;
44722     if-ne v1, v2, :cond_b2
44724     move-object/from16 v0, v19
44726     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44728     move-object/from16 v0, v18
44730     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44732     if-ne v1, v2, :cond_b2
44734     :cond_aa
44735     move-object/from16 v19, v18
44737     move-object/from16 v0, v18
44739     iget-object v8, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44741     const/4 v14, 0x0
44743     move v13, v14
44745     :cond_b2
44746     add-int/lit8 v13, v13, 0x1
44748     move-object/from16 v0, v18
44750     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
44752     if-eqz v1, :cond_c4
44754     move-object/from16 v0, v18
44756     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
44758     iget-object v1, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
44760     if-eqz v1, :cond_c4
44762     add-int/lit8 v14, v14, 0x1
44764     :cond_c4
44765     if-eqz v12, :cond_ca
44767     iget-object v1, v12, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
44769     if-eq v1, v8, :cond_199
44771     :cond_ca
44772     new-instance v7, Landroid/app/ActivityManager$RunningTaskInfo;
44774     invoke-direct {v7}, Landroid/app/ActivityManager$RunningTaskInfo;-><init>()V
44776     iget v1, v8, Lcom/android/server/am/TaskRecord;->taskId:I
44778     iput v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->id:I
44780     move-object/from16 v0, v18
44782     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
44784     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
44786     move-result-object v1
44788     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->baseActivity:Landroid/content/ComponentName;
44790     move-object/from16 v0, v19
44792     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
44794     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
44796     move-result-object v1
44798     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->topActivity:Landroid/content/ComponentName;
44800     move-object/from16 v0, v19
44802     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
44804     if-eqz v1, :cond_f5
44806     move-object/from16 v0, v19
44808     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
44810     iget-object v1, v1, Lcom/android/server/am/ThumbnailHolder;->lastDescription:Ljava/lang/CharSequence;
44812     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->description:Ljava/lang/CharSequence;
44814     :cond_f5
44815     iput v13, v7, Landroid/app/ActivityManager$RunningTaskInfo;->numActivities:I
44817     iput v14, v7, Landroid/app/ActivityManager$RunningTaskInfo;->numRunning:I
44819     iget-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->thumbnail:Landroid/graphics/Bitmap;
44821     if-nez v1, :cond_196
44823     if-eqz p3, :cond_196
44825     move-object/from16 v0, v19
44827     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
44829     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
44831     if-eq v1, v2, :cond_10f
44833     move-object/from16 v0, v19
44835     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
44837     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
44839     if-ne v1, v2, :cond_12d
44841     :cond_10f
44842     move-object/from16 v0, v19
44844     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->idle:Z
44846     if-eqz v1, :cond_14e
44848     move-object/from16 v0, v19
44850     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
44852     if-eqz v1, :cond_14e
44854     move-object/from16 v0, v19
44856     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
44858     iget-object v1, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
44860     if-eqz v1, :cond_14e
44862     move-object/from16 v20, v19
44864     move-object/from16 v0, v19
44866     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
44868     iget-object v0, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
44870     move-object/from16 v21, v0
44872     :cond_12d
44873     :goto_12d
44874     if-nez v16, :cond_193
44876     new-instance v15, Lcom/android/server/am/PendingThumbnailsRecord;
44878     move-object/from16 v0, p3
44880     invoke-direct {v15, v0}, Lcom/android/server/am/PendingThumbnailsRecord;-><init>(Landroid/app/IThumbnailReceiver;)V
44881     :try_end_136
44882     .catchall {:try_start_87 .. :try_end_136} :catchall_154
44884     :goto_136
44885     :try_start_136
44886     iget-object v1, v15, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
44888     move-object/from16 v0, v19
44890     invoke-virtual {v1, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
44892     :goto_13d
44893     invoke-virtual {v10, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44894     :try_end_140
44895     .catchall {:try_start_136 .. :try_end_140} :catchall_56
44897     add-int/lit8 p1, p1, -0x1
44899     const/16 v19, 0x0
44901     :goto_144
44902     move-object/from16 v16, v15
44904     goto/16 :goto_7d
44906     :cond_148
44907     const/4 v12, 0x0
44909     goto/16 :goto_76
44911     :cond_14b
44912     const/4 v12, 0x0
44914     goto/16 :goto_96
44916     :cond_14e
44917     const/4 v1, 0x1
44919     :try_start_14f
44920     move-object/from16 v0, v19
44922     iput-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->thumbnailNeeded:Z
44924     goto :goto_12d
44926     :catchall_154
44927     move-exception v1
44929     move-object/from16 v15, v16
44931     goto/16 :goto_57
44933     :cond_159
44934     if-eqz v16, :cond_164
44936     move-object/from16 v0, p0
44938     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
44940     move-object/from16 v0, v16
44942     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44944     :cond_164
44945     monitor-exit p0
44946     :try_end_165
44947     .catchall {:try_start_14f .. :try_end_165} :catchall_154
44949     if-eqz v21, :cond_170
44951     :try_start_167
44952     move-object/from16 v0, v20
44954     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
44956     move-object/from16 v0, v21
44958     invoke-interface {v0, v1}, Landroid/app/IApplicationThread;->requestThumbnail(Landroid/os/IBinder;)V
44959     :try_end_170
44960     .catch Ljava/lang/Exception; {:try_start_167 .. :try_end_170} :catch_178
44962     :cond_170
44963     :goto_170
44964     if-nez v16, :cond_177
44966     if-eqz p3, :cond_177
44968     :try_start_174
44969     invoke-interface/range {p3 .. p3}, Landroid/app/IThumbnailReceiver;->finished()V
44970     :try_end_177
44971     .catch Landroid/os/RemoteException; {:try_start_174 .. :try_end_177} :catch_191
44973     :cond_177
44974     :goto_177
44975     return-object v10
44977     :catch_178
44978     move-exception v9
44980     const-string v1, "ActivityManager"
44982     const-string v2, "Exception thrown when requesting thumbnail"
44984     invoke-static {v1, v2, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
44986     const/4 v2, 0x0
44988     move-object/from16 v0, v20
44990     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
44992     const/4 v4, 0x0
44994     const/4 v5, 0x0
44996     const/4 v6, 0x1
44998     move-object/from16 v1, p0
45000     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
45002     goto :goto_170
45004     :catch_18e
45005     move-exception v1
45007     goto/16 :goto_1a
45009     :catch_191
45010     move-exception v1
45012     goto :goto_177
45014     :cond_193
45015     move-object/from16 v15, v16
45017     goto :goto_136
45019     :cond_196
45020     move-object/from16 v15, v16
45022     goto :goto_13d
45024     :cond_199
45025     move-object/from16 v15, v16
45027     goto :goto_144
45028 .end method
45030 .method public getUidForIntentSender(Landroid/content/IIntentSender;)I
45031     .registers 5
45033     instance-of v2, p1, Lcom/android/server/am/PendingIntentRecord;
45035     if-eqz v2, :cond_c
45037     :try_start_4
45038     move-object v0, p1
45040     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
45042     move-object v1, v0
45044     iget v2, v1, Lcom/android/server/am/PendingIntentRecord;->uid:I
45045     :try_end_a
45046     .catch Ljava/lang/ClassCastException; {:try_start_4 .. :try_end_a} :catch_b
45048     :goto_a
45049     return v2
45051     :catch_b
45052     move-exception v2
45054     :cond_c
45055     const/4 v2, -0x1
45057     goto :goto_a
45058 .end method
45060 .method public goingToSleep()V
45061     .registers 5
45063     const-string v1, "android.permission.DEVICE_POWER"
45065     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
45067     move-result v1
45069     if-eqz v1, :cond_10
45071     new-instance v1, Ljava/lang/SecurityException;
45073     const-string v2, "Requires permission android.permission.DEVICE_POWER"
45075     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
45077     throw v1
45079     :cond_10
45080     monitor-enter p0
45082     const/4 v1, 0x1
45084     :try_start_12
45085     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
45087     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
45089     iget-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
45091     if-nez v1, :cond_3e
45093     const/4 v1, 0x1
45095     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
45097     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45099     invoke-virtual {v1}, Lcom/android/server/am/ActivityStack;->stopIfSleepingLocked()V
45101     const/4 v1, 0x0
45103     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked(Z)V
45105     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
45107     const/16 v2, 0x1b
45109     invoke-virtual {v1, v2}, Landroid/os/Handler;->removeMessages(I)V
45111     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
45113     const/16 v2, 0x1b
45115     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
45117     move-result-object v0
45119     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
45121     const-wide/32 v2, 0xdbba0
45123     invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
45125     :cond_3e
45126     monitor-exit p0
45128     return-void
45130     :catchall_40
45131     move-exception v1
45133     monitor-exit p0
45134     :try_end_42
45135     .catchall {:try_start_12 .. :try_end_42} :catchall_40
45137     throw v1
45138 .end method
45140 .method public grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;I)V
45141     .registers 12
45143     const-string v0, "grantUriPermission"
45145     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
45147     monitor-enter p0
45149     :try_start_6
45150     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
45152     move-result-object v6
45154     if-nez v6, :cond_32
45156     new-instance v0, Ljava/lang/SecurityException;
45158     new-instance v1, Ljava/lang/StringBuilder;
45160     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
45162     const-string v2, "Unable to find app for caller "
45164     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45166     move-result-object v1
45168     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
45170     move-result-object v1
45172     const-string v2, " when granting permission to uri "
45174     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45176     move-result-object v1
45178     invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
45180     move-result-object v1
45182     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
45184     move-result-object v1
45186     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
45188     throw v0
45190     :catchall_2f
45191     move-exception v0
45193     monitor-exit p0
45194     :try_end_31
45195     .catchall {:try_start_6 .. :try_end_31} :catchall_2f
45197     throw v0
45199     :cond_32
45200     if-nez p2, :cond_3c
45202     :try_start_34
45203     new-instance v0, Ljava/lang/IllegalArgumentException;
45205     const-string v1, "null target"
45207     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
45209     throw v0
45211     :cond_3c
45212     if-nez p3, :cond_46
45214     new-instance v0, Ljava/lang/IllegalArgumentException;
45216     const-string v1, "null uri"
45218     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
45220     throw v0
45222     :cond_46
45223     iget v1, v6, Lcom/android/server/am/ProcessRecord;->uid:I
45225     const/4 v5, 0x0
45227     move-object v0, p0
45229     move-object v2, p2
45231     move-object v3, p3
45233     move v4, p4
45235     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45237     monitor-exit p0
45238     :try_end_51
45239     .catchall {:try_start_34 .. :try_end_51} :catchall_2f
45241     return-void
45242 .end method
45244 .method grantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/am/UriPermissionOwner;)V
45245     .registers 12
45247     if-eqz p3, :cond_12
45249     invoke-virtual {p3}, Landroid/content/Intent;->getFlags()I
45251     move-result v4
45253     :goto_6
45254     const/4 v5, 0x0
45256     move-object v0, p0
45258     move v1, p1
45260     move-object v2, p2
45262     move-object v3, p3
45264     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
45266     move-result-object v6
45268     if-nez v6, :cond_14
45270     :goto_11
45271     return-void
45273     :cond_12
45274     const/4 v4, 0x0
45276     goto :goto_6
45278     :cond_14
45279     invoke-virtual {p0, v6, p4}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedFromIntentLocked(Lcom/android/server/am/ActivityManagerService$NeededUriGrants;Lcom/android/server/am/UriPermissionOwner;)V
45281     goto :goto_11
45282 .end method
45284 .method public grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;I)V
45285     .registers 12
45287     monitor-enter p0
45289     :try_start_1
45290     invoke-static {p1}, Lcom/android/server/am/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/am/UriPermissionOwner;
45292     move-result-object v5
45294     if-nez v5, :cond_23
45296     new-instance v0, Ljava/lang/IllegalArgumentException;
45298     new-instance v1, Ljava/lang/StringBuilder;
45300     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
45302     const-string v2, "Unknown owner: "
45304     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45306     move-result-object v1
45308     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
45310     move-result-object v1
45312     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
45314     move-result-object v1
45316     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
45318     throw v0
45320     :catchall_20
45321     move-exception v0
45323     monitor-exit p0
45324     :try_end_22
45325     .catchall {:try_start_1 .. :try_end_22} :catchall_20
45327     throw v0
45329     :cond_23
45330     :try_start_23
45331     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45333     move-result v0
45335     if-eq p2, v0, :cond_3b
45337     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45339     move-result v0
45341     invoke-static {}, Landroid/os/Process;->myUid()I
45343     move-result v1
45345     if-eq v0, v1, :cond_3b
45347     new-instance v0, Ljava/lang/SecurityException;
45349     const-string v1, "nice try"
45351     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
45353     throw v0
45355     :cond_3b
45356     if-nez p3, :cond_45
45358     new-instance v0, Ljava/lang/IllegalArgumentException;
45360     const-string v1, "null target"
45362     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
45364     throw v0
45366     :cond_45
45367     if-nez p4, :cond_4f
45369     new-instance v0, Ljava/lang/IllegalArgumentException;
45371     const-string v1, "null uri"
45373     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
45375     throw v0
45377     :cond_4f
45378     move-object v0, p0
45380     move v1, p2
45382     move-object v2, p3
45384     move-object v3, p4
45386     move v4, p5
45388     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45390     monitor-exit p0
45391     :try_end_58
45392     .catchall {:try_start_23 .. :try_end_58} :catchall_20
45394     return-void
45395 .end method
45397 .method grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45398     .registers 12
45400     if-nez p2, :cond_a
45402     new-instance v0, Ljava/lang/NullPointerException;
45404     const-string v2, "targetPkg"
45406     invoke-direct {v0, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
45408     throw v0
45410     :cond_a
45411     const/4 v5, -0x1
45413     move-object v0, p0
45415     move v1, p1
45417     move-object v2, p2
45419     move-object v3, p3
45421     move v4, p4
45423     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
45425     move-result v1
45427     if-gez v1, :cond_17
45429     :goto_16
45430     return-void
45432     :cond_17
45433     move-object v0, p0
45435     move-object v2, p2
45437     move-object v3, p3
45439     move v4, p4
45441     move-object v5, p5
45443     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45445     goto :goto_16
45446 .end method
45448 .method grantUriPermissionUncheckedFromIntentLocked(Lcom/android/server/am/ActivityManagerService$NeededUriGrants;Lcom/android/server/am/UriPermissionOwner;)V
45449     .registers 10
45451     if-eqz p1, :cond_1d
45453     const/4 v6, 0x0
45455     :goto_3
45456     invoke-virtual {p1}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->size()I
45458     move-result v0
45460     if-ge v6, v0, :cond_1d
45462     iget v1, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
45464     iget-object v2, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetPkg:Ljava/lang/String;
45466     invoke-virtual {p1, v6}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->get(I)Ljava/lang/Object;
45468     move-result-object v3
45470     check-cast v3, Landroid/net/Uri;
45472     iget v4, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->flags:I
45474     move-object v0, p0
45476     move-object v5, p2
45478     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45480     add-int/lit8 v6, v6, 0x1
45482     goto :goto_3
45484     :cond_1d
45485     return-void
45486 .end method
45488 .method grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
45489     .registers 9
45491     and-int/lit8 p4, p4, 0x3
45493     if-nez p4, :cond_5
45495     :cond_4
45496     :goto_4
45497     return-void
45499     :cond_5
45500     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
45502     invoke-virtual {v2, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
45504     move-result-object v1
45506     check-cast v1, Ljava/util/HashMap;
45508     if-nez v1, :cond_19
45510     new-instance v1, Ljava/util/HashMap;
45512     invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
45514     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
45516     invoke-virtual {v2, p1, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
45518     :cond_19
45519     invoke-virtual {v1, p3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
45521     move-result-object v0
45523     check-cast v0, Lcom/android/server/am/UriPermission;
45525     if-nez v0, :cond_29
45527     new-instance v0, Lcom/android/server/am/UriPermission;
45529     invoke-direct {v0, p1, p3}, Lcom/android/server/am/UriPermission;-><init>(ILandroid/net/Uri;)V
45531     invoke-virtual {v1, p3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45533     :cond_29
45534     iget v2, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
45536     or-int/2addr v2, p4
45538     iput v2, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
45540     if-nez p5, :cond_36
45542     iget v2, v0, Lcom/android/server/am/UriPermission;->globalModeFlags:I
45544     or-int/2addr v2, p4
45546     iput v2, v0, Lcom/android/server/am/UriPermission;->globalModeFlags:I
45548     goto :goto_4
45550     :cond_36
45551     and-int/lit8 v2, p4, 0x1
45553     if-eqz v2, :cond_42
45555     iget-object v2, v0, Lcom/android/server/am/UriPermission;->readOwners:Ljava/util/HashSet;
45557     invoke-virtual {v2, p5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
45559     invoke-virtual {p5, v0}, Lcom/android/server/am/UriPermissionOwner;->addReadPermission(Lcom/android/server/am/UriPermission;)V
45561     :cond_42
45562     and-int/lit8 v2, p4, 0x2
45564     if-eqz v2, :cond_4
45566     iget-object v2, v0, Lcom/android/server/am/UriPermission;->writeOwners:Ljava/util/HashSet;
45568     invoke-virtual {v2, p5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
45570     invoke-virtual {p5, v0}, Lcom/android/server/am/UriPermissionOwner;->addWritePermission(Lcom/android/server/am/UriPermission;)V
45572     goto :goto_4
45573 .end method
45575 .method public handleApplicationCrash(Landroid/os/IBinder;Landroid/app/ApplicationErrorReport$CrashInfo;)V
45576     .registers 13
45578     const/4 v4, 0x0
45580     const-string v0, "Crash"
45582     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
45584     move-result-object v2
45586     if-nez p1, :cond_52
45588     const-string v3, "system_server"
45590     :goto_b
45591     const/16 v1, 0x7557
45593     const/4 v0, 0x7
45595     new-array v5, v0, [Ljava/lang/Object;
45597     const/4 v0, 0x0
45599     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
45601     move-result v6
45603     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45605     move-result-object v6
45607     aput-object v6, v5, v0
45609     const/4 v0, 0x1
45611     aput-object v3, v5, v0
45613     const/4 v6, 0x2
45615     if-nez v2, :cond_5a
45617     const/4 v0, -0x1
45619     :goto_22
45620     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45622     move-result-object v0
45624     aput-object v0, v5, v6
45626     const/4 v0, 0x3
45628     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionClassName:Ljava/lang/String;
45630     aput-object v6, v5, v0
45632     const/4 v0, 0x4
45634     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
45636     aput-object v6, v5, v0
45638     const/4 v0, 0x5
45640     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->throwFileName:Ljava/lang/String;
45642     aput-object v6, v5, v0
45644     const/4 v0, 0x6
45646     iget v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->throwLineNumber:I
45648     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45650     move-result-object v6
45652     aput-object v6, v5, v0
45654     invoke-static {v1, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
45656     const-string v1, "crash"
45658     move-object v0, p0
45660     move-object v5, v4
45662     move-object v6, v4
45664     move-object v7, v4
45666     move-object v8, v4
45668     move-object v9, p2
45670     invoke-virtual/range {v0 .. v9}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
45672     invoke-direct {p0, v2, p2}, Lcom/android/server/am/ActivityManagerService;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
45674     return-void
45676     :cond_52
45677     if-nez v2, :cond_57
45679     const-string v3, "unknown"
45681     goto :goto_b
45683     :cond_57
45684     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
45686     goto :goto_b
45688     :cond_5a
45689     iget-object v0, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
45691     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
45693     goto :goto_22
45694 .end method
45696 .method public handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
45697     .registers 16
45699     const-string v9, "StrictMode"
45701     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
45703     move-result-object v5
45705     if-nez v5, :cond_9
45707     :cond_8
45708     :goto_8
45709     return-void
45711     :cond_9
45712     and-int/lit16 v9, p2, 0x80
45714     if-eqz v9, :cond_28
45716     invoke-virtual {p3}, Landroid/os/StrictMode$ViolationInfo;->hashCode()I
45718     move-result v9
45720     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45722     move-result-object v8
45724     const/4 v1, 0x1
45726     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
45728     monitor-enter v10
45730     :try_start_19
45731     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
45733     invoke-virtual {v9, v8}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
45735     move-result v9
45737     if-eqz v9, :cond_83
45739     const/4 v1, 0x0
45741     :goto_22
45742     monitor-exit v10
45743     :try_end_23
45744     .catchall {:try_start_19 .. :try_end_23} :catchall_98
45746     if-eqz v1, :cond_28
45748     invoke-direct {p0, v5, p3}, Lcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
45750     :cond_28
45751     and-int/lit8 v9, p2, 0x20
45753     if-eqz v9, :cond_8
45755     new-instance v7, Lcom/android/server/am/AppErrorResult;
45757     invoke-direct {v7}, Lcom/android/server/am/AppErrorResult;-><init>()V
45759     monitor-enter p0
45761     :try_start_32
45762     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45764     move-result-wide v3
45766     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
45768     move-result-object v2
45770     const/16 v9, 0x1a
45772     iput v9, v2, Landroid/os/Message;->what:I
45774     new-instance v0, Ljava/util/HashMap;
45776     invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
45778     const-string v9, "result"
45780     invoke-virtual {v0, v9, v7}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45782     const-string v9, "app"
45784     invoke-virtual {v0, v9, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45786     const-string v9, "violationMask"
45788     invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45790     move-result-object v10
45792     invoke-virtual {v0, v9, v10}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45794     const-string v9, "info"
45796     invoke-virtual {v0, v9, p3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45798     iput-object v0, v2, Landroid/os/Message;->obj:Ljava/lang/Object;
45800     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
45802     invoke-virtual {v9, v2}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
45804     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45806     monitor-exit p0
45807     :try_end_66
45808     .catchall {:try_start_32 .. :try_end_66} :catchall_9b
45810     invoke-virtual {v7}, Lcom/android/server/am/AppErrorResult;->get()I
45812     move-result v6
45814     const-string v9, "ActivityManager"
45816     new-instance v10, Ljava/lang/StringBuilder;
45818     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
45820     const-string v11, "handleApplicationStrictModeViolation; res="
45822     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45824     move-result-object v10
45826     invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
45828     move-result-object v10
45830     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
45832     move-result-object v10
45834     invoke-static {v9, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
45836     goto :goto_8
45838     :cond_83
45839     :try_start_83
45840     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
45842     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
45844     move-result v9
45846     const/16 v11, 0x1388
45848     if-lt v9, v11, :cond_92
45850     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
45852     invoke-virtual {v9}, Ljava/util/HashSet;->clear()V
45854     :cond_92
45855     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
45857     invoke-virtual {v9, v8}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
45859     goto :goto_22
45861     :catchall_98
45862     move-exception v9
45864     monitor-exit v10
45865     :try_end_9a
45866     .catchall {:try_start_83 .. :try_end_9a} :catchall_98
45868     throw v9
45870     :catchall_9b
45871     move-exception v9
45873     :try_start_9c
45874     monitor-exit p0
45875     :try_end_9d
45876     .catchall {:try_start_9c .. :try_end_9d} :catchall_9b
45878     throw v9
45879 .end method
45881 .method public handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Z
45882     .registers 16
45884     const/4 v10, 0x1
45886     const/4 v11, 0x0
45888     const/4 v4, 0x0
45890     const-string v0, "WTF"
45892     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
45894     move-result-object v2
45896     if-nez p1, :cond_5b
45898     const-string v3, "system_server"
45900     :goto_d
45901     const/16 v1, 0x7558
45903     const/4 v0, 0x5
45905     new-array v5, v0, [Ljava/lang/Object;
45907     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
45909     move-result v0
45911     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45913     move-result-object v0
45915     aput-object v0, v5, v11
45917     aput-object v3, v5, v10
45919     const/4 v6, 0x2
45921     if-nez v2, :cond_63
45923     const/4 v0, -0x1
45925     :goto_22
45926     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45928     move-result-object v0
45930     aput-object v0, v5, v6
45932     const/4 v0, 0x3
45934     aput-object p2, v5, v0
45936     const/4 v0, 0x4
45938     iget-object v6, p3, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
45940     aput-object v6, v5, v0
45942     invoke-static {v1, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
45944     const-string v1, "wtf"
45946     move-object v0, p0
45948     move-object v5, v4
45950     move-object v6, p2
45952     move-object v7, v4
45954     move-object v8, v4
45956     move-object v9, p3
45958     invoke-virtual/range {v0 .. v9}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
45960     if-eqz v2, :cond_68
45962     iget v0, v2, Lcom/android/server/am/ProcessRecord;->pid:I
45964     invoke-static {}, Landroid/os/Process;->myPid()I
45966     move-result v1
45968     if-eq v0, v1, :cond_68
45970     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
45972     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
45974     move-result-object v0
45976     const-string v1, "wtf_is_fatal"
45978     invoke-static {v0, v1, v11}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
45980     move-result v0
45982     if-eqz v0, :cond_68
45984     invoke-direct {p0, v2, p3}, Lcom/android/server/am/ActivityManagerService;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
45986     move v0, v10
45988     :goto_5a
45989     return v0
45991     :cond_5b
45992     if-nez v2, :cond_60
45994     const-string v3, "unknown"
45996     goto :goto_d
45998     :cond_60
45999     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
46001     goto :goto_d
46003     :cond_63
46004     iget-object v0, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
46006     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
46008     goto :goto_22
46010     :cond_68
46011     move v0, v11
46013     goto :goto_5a
46014 .end method
46016 .method incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
46017     .registers 9
46019     const/4 v3, 0x1
46021     if-eqz p1, :cond_52
46023     const/4 v1, 0x0
46025     :goto_4
46026     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
46028     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
46030     move-result v2
46032     if-ge v1, v2, :cond_37
46034     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
46036     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
46038     move-result-object v0
46040     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
46042     iget-object v2, v0, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
46044     if-ne v2, p2, :cond_34
46046     if-eqz p4, :cond_27
46048     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
46050     add-int/lit8 v2, v2, 0x1
46052     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
46054     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
46056     add-int/lit8 v2, v2, 0x1
46058     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
46060     :goto_26
46061     return-object v0
46063     :cond_27
46064     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
46066     add-int/lit8 v2, v2, 0x1
46068     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
46070     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
46072     add-int/lit8 v2, v2, 0x1
46074     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
46076     goto :goto_26
46078     :cond_34
46079     add-int/lit8 v1, v1, 0x1
46081     goto :goto_4
46083     :cond_37
46084     new-instance v0, Lcom/android/server/am/ContentProviderConnection;
46086     invoke-direct {v0, p2, p1}, Lcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;)V
46088     if-eqz p4, :cond_4d
46090     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
46092     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
46094     :goto_42
46095     iget-object v2, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
46097     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
46099     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
46101     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
46103     goto :goto_26
46105     :cond_4d
46106     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
46108     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
46110     goto :goto_42
46112     :cond_52
46113     invoke-virtual {p2, p3}, Lcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;)V
46115     const/4 v0, 0x0
46117     goto :goto_26
46118 .end method
46120 .method isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
46121     .registers 3
46123     iget v0, p1, Landroid/content/pm/ApplicationInfo;->flags:I
46125     and-int/lit8 v0, v0, 0x8
46127     if-eqz v0, :cond_8
46129     const/4 v0, 0x1
46131     :goto_7
46132     return v0
46134     :cond_8
46135     const/4 v0, 0x0
46137     goto :goto_7
46138 .end method
46140 .method public isImmersive(Landroid/os/IBinder;)Z
46141     .registers 4
46143     monitor-enter p0
46145     :try_start_1
46146     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
46148     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
46150     move-result-object v0
46152     if-nez v0, :cond_12
46154     new-instance v1, Ljava/lang/IllegalArgumentException;
46156     invoke-direct {v1}, Ljava/lang/IllegalArgumentException;-><init>()V
46158     throw v1
46160     :catchall_f
46161     move-exception v1
46163     monitor-exit p0
46164     :try_end_11
46165     .catchall {:try_start_1 .. :try_end_11} :catchall_f
46167     throw v1
46169     :cond_12
46170     :try_start_12
46171     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
46173     monitor-exit p0
46174     :try_end_15
46175     .catchall {:try_start_12 .. :try_end_15} :catchall_f
46177     return v1
46178 .end method
46180 .method public isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z
46181     .registers 7
46183     const/4 v2, 0x0
46185     instance-of v3, p1, Lcom/android/server/am/PendingIntentRecord;
46187     if-nez v3, :cond_6
46189     :cond_5
46190     :goto_5
46191     return v2
46193     :cond_6
46194     :try_start_6
46195     move-object v0, p1
46197     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
46199     move-object v1, v0
46201     iget-object v3, v1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
46203     iget v3, v3, Lcom/android/server/am/PendingIntentRecord$Key;->type:I
46204     :try_end_e
46205     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_e} :catch_13
46207     const/4 v4, 0x2
46209     if-ne v3, v4, :cond_5
46211     const/4 v2, 0x1
46213     goto :goto_5
46215     :catch_13
46216     move-exception v3
46218     goto :goto_5
46219 .end method
46221 .method public isIntentSenderTargetedToPackage(Landroid/content/IIntentSender;)Z
46222     .registers 8
46224     const/4 v4, 0x0
46226     instance-of v5, p1, Lcom/android/server/am/PendingIntentRecord;
46228     if-nez v5, :cond_6
46230     :cond_5
46231     :goto_5
46232     return v4
46234     :cond_6
46235     :try_start_6
46236     move-object v0, p1
46238     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
46240     move-object v3, v0
46242     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
46244     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
46246     if-eqz v5, :cond_5
46248     const/4 v1, 0x0
46250     :goto_11
46251     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
46253     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
46255     array-length v5, v5
46257     if-ge v1, v5, :cond_2d
46259     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
46261     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
46263     aget-object v2, v5, v1
46265     invoke-virtual {v2}, Landroid/content/Intent;->getPackage()Ljava/lang/String;
46267     move-result-object v5
46269     if-eqz v5, :cond_2a
46271     invoke-virtual {v2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
46272     :try_end_27
46273     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_27} :catch_2f
46275     move-result-object v5
46277     if-nez v5, :cond_5
46279     :cond_2a
46280     add-int/lit8 v1, v1, 0x1
46282     goto :goto_11
46284     :cond_2d
46285     const/4 v4, 0x1
46287     goto :goto_5
46289     :catch_2f
46290     move-exception v5
46292     goto :goto_5
46293 .end method
46295 .method isNextTransitionForward()Z
46296     .registers 3
46298     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
46300     invoke-virtual {v1}, Lcom/android/server/wm/WindowManagerService;->getPendingAppTransition()I
46302     move-result v0
46304     const/16 v1, 0x1006
46306     if-eq v0, v1, :cond_12
46308     const/16 v1, 0x1008
46310     if-eq v0, v1, :cond_12
46312     const/16 v1, 0x100a
46314     if-ne v0, v1, :cond_14
46316     :cond_12
46317     const/4 v1, 0x1
46319     :goto_13
46320     return v1
46322     :cond_14
46323     const/4 v1, 0x0
46325     goto :goto_13
46326 .end method
46328 .method isPendingBroadcastProcessLocked(I)Z
46329     .registers 3
46331     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
46333     invoke-virtual {v0, p1}, Lcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
46335     move-result v0
46337     if-nez v0, :cond_10
46339     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
46341     invoke-virtual {v0, p1}, Lcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
46343     move-result v0
46345     if-eqz v0, :cond_12
46347     :cond_10
46348     const/4 v0, 0x1
46350     :goto_11
46351     return v0
46353     :cond_12
46354     const/4 v0, 0x0
46356     goto :goto_11
46357 .end method
46359 .method isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
46360     .registers 6
46362     const/4 v0, 0x0
46364     iget v1, p2, Landroid/content/pm/ApplicationInfo;->uid:I
46366     invoke-static {v1}, Landroid/os/UserId;->getAppId(I)I
46368     move-result v1
46370     const/16 v2, 0x2710
46372     if-lt v1, v2, :cond_d
46374     const/4 v0, 0x0
46376     :cond_c
46377     :goto_c
46378     return v0
46380     :cond_d
46381     iget-object v1, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
46383     if-ne p1, v1, :cond_1b
46385     iget v1, p2, Landroid/content/pm/ApplicationInfo;->flags:I
46387     and-int/lit8 v1, v1, 0x8
46389     if-eqz v1, :cond_19
46391     const/4 v0, 0x1
46393     :goto_18
46394     goto :goto_c
46396     :cond_19
46397     const/4 v0, 0x0
46399     goto :goto_18
46401     :cond_1b
46402     const-string v1, "system"
46404     invoke-virtual {v1, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
46406     move-result v1
46408     if-eqz v1, :cond_c
46410     const/4 v0, 0x1
46412     goto :goto_c
46413 .end method
46415 .method public isSleeping()Z
46416     .registers 2
46418     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
46420     if-nez v0, :cond_8
46422     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
46424     if-eqz v0, :cond_a
46426     :cond_8
46427     const/4 v0, 0x1
46429     :goto_9
46430     return v0
46432     :cond_a
46433     const/4 v0, 0x0
46435     goto :goto_9
46436 .end method
46438 .method public isTopActivityImmersive()Z
46439     .registers 4
46441     const-string v1, "startActivity"
46443     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
46445     monitor-enter p0
46447     :try_start_6
46448     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
46450     const/4 v2, 0x0
46452     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
46454     move-result-object v0
46456     if-eqz v0, :cond_13
46458     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
46460     :goto_11
46461     monitor-exit p0
46463     return v1
46465     :cond_13
46466     const/4 v1, 0x0
46468     goto :goto_11
46470     :catchall_15
46471     move-exception v1
46473     monitor-exit p0
46474     :try_end_17
46475     .catchall {:try_start_6 .. :try_end_17} :catchall_15
46477     throw v1
46478 .end method
46480 .method public isUserAMonkey()Z
46481     .registers 2
46483     monitor-enter p0
46485     :try_start_1
46486     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
46488     if-eqz v0, :cond_8
46490     const/4 v0, 0x1
46492     :goto_6
46493     monitor-exit p0
46495     return v0
46497     :cond_8
46498     const/4 v0, 0x0
46500     goto :goto_6
46502     :catchall_a
46503     move-exception v0
46505     monitor-exit p0
46506     :try_end_c
46507     .catchall {:try_start_1 .. :try_end_c} :catchall_a
46509     throw v0
46510 .end method
46512 .method public killAllBackgroundProcesses()V
46513     .registers 16
46515     const-string v11, "android.permission.KILL_BACKGROUND_PROCESSES"
46517     invoke-virtual {p0, v11}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
46519     move-result v11
46521     if-eqz v11, :cond_44
46523     new-instance v11, Ljava/lang/StringBuilder;
46525     invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
46527     const-string v12, "Permission Denial: killAllBackgroundProcesses() from pid="
46529     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46531     move-result-object v11
46533     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
46535     move-result v12
46537     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
46539     move-result-object v11
46541     const-string v12, ", uid="
46543     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46545     move-result-object v11
46547     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
46549     move-result v12
46551     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
46553     move-result-object v11
46555     const-string v12, " requires "
46557     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46559     move-result-object v11
46561     const-string v12, "android.permission.KILL_BACKGROUND_PROCESSES"
46563     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46565     move-result-object v11
46567     invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46569     move-result-object v9
46571     const-string v11, "ActivityManager"
46573     invoke-static {v11, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
46575     new-instance v11, Ljava/lang/SecurityException;
46577     invoke-direct {v11, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
46579     throw v11
46581     :cond_44
46582     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
46584     move-result-wide v4
46586     :try_start_48
46587     monitor-enter p0
46588     :try_end_49
46589     .catchall {:try_start_48 .. :try_end_49} :catchall_87
46591     :try_start_49
46592     new-instance v10, Ljava/util/ArrayList;
46594     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
46596     iget-object v11, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
46598     invoke-virtual {v11}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
46600     move-result-object v11
46602     invoke-virtual {v11}, Ljava/util/HashMap;->values()Ljava/util/Collection;
46604     move-result-object v11
46606     invoke-interface {v11}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
46608     move-result-object v7
46610     :cond_5c
46611     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
46613     move-result v11
46615     if-eqz v11, :cond_99
46617     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
46619     move-result-object v3
46621     check-cast v3, Landroid/util/SparseArray;
46623     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
46625     move-result v1
46627     const/4 v8, 0x0
46629     :goto_6d
46630     if-ge v8, v1, :cond_5c
46632     invoke-virtual {v3, v8}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
46634     move-result-object v2
46636     check-cast v2, Lcom/android/server/am/ProcessRecord;
46638     iget-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->persistent:Z
46640     if-eqz v11, :cond_7c
46642     :cond_79
46643     :goto_79
46644     add-int/lit8 v8, v8, 0x1
46646     goto :goto_6d
46648     :cond_7c
46649     iget-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
46651     if-eqz v11, :cond_8c
46653     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
46655     goto :goto_79
46657     :catchall_84
46658     move-exception v11
46660     monitor-exit p0
46661     :try_end_86
46662     .catchall {:try_start_49 .. :try_end_86} :catchall_84
46664     :try_start_86
46665     throw v11
46666     :try_end_87
46667     .catchall {:try_start_86 .. :try_end_87} :catchall_87
46669     :catchall_87
46670     move-exception v11
46672     invoke-static {v4, v5}, Landroid/os/Binder;->restoreCallingIdentity(J)V
46674     throw v11
46676     :cond_8c
46677     :try_start_8c
46678     iget v11, v2, Lcom/android/server/am/ProcessRecord;->setAdj:I
46680     sget v12, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
46682     if-lt v11, v12, :cond_79
46684     const/4 v11, 0x1
46686     iput-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
46688     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
46690     goto :goto_79
46692     :cond_99
46693     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
46695     move-result v0
46697     const/4 v6, 0x0
46699     :goto_9e
46700     if-ge v6, v0, :cond_b0
46702     invoke-virtual {v10, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
46704     move-result-object v11
46706     check-cast v11, Lcom/android/server/am/ProcessRecord;
46708     const/4 v12, 0x0
46710     const/4 v13, 0x1
46712     const-string v14, "kill all background"
46714     invoke-direct {p0, v11, v12, v13, v14}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
46716     add-int/lit8 v6, v6, 0x1
46718     goto :goto_9e
46720     :cond_b0
46721     monitor-exit p0
46722     :try_end_b1
46723     .catchall {:try_start_8c .. :try_end_b1} :catchall_84
46725     invoke-static {v4, v5}, Landroid/os/Binder;->restoreCallingIdentity(J)V
46727     return-void
46728 .end method
46730 .method killAppAtUsersRequest(Lcom/android/server/am/ProcessRecord;Landroid/app/Dialog;)V
46731     .registers 7
46733     monitor-enter p0
46735     const/4 v0, 0x0
46737     :try_start_2
46738     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
46740     const/4 v0, 0x0
46742     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
46744     const/4 v0, 0x0
46746     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
46748     const/4 v0, 0x0
46750     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
46752     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
46754     if-ne v0, p2, :cond_14
46756     const/4 v0, 0x0
46758     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
46760     :cond_14
46761     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
46763     if-ne v0, p2, :cond_1b
46765     const/4 v0, 0x0
46767     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
46769     :cond_1b
46770     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
46772     if-lez v0, :cond_6f
46774     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
46776     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
46778     if-eq v0, v1, :cond_6f
46780     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
46782     const-string v0, "ActivityManager"
46784     new-instance v1, Ljava/lang/StringBuilder;
46786     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
46788     const-string v2, "Killing "
46790     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46792     move-result-object v1
46794     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
46796     move-result-object v1
46798     const-string v2, ": user\'s request"
46800     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46802     move-result-object v1
46804     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46806     move-result-object v1
46808     invoke-static {v0, v1}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
46810     const/16 v0, 0x7547
46812     const/4 v1, 0x4
46814     new-array v1, v1, [Ljava/lang/Object;
46816     const/4 v2, 0x0
46818     iget v3, p1, Lcom/android/server/am/ProcessRecord;->pid:I
46820     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
46822     move-result-object v3
46824     aput-object v3, v1, v2
46826     const/4 v2, 0x1
46828     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
46830     aput-object v3, v1, v2
46832     const/4 v2, 0x2
46834     iget v3, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
46836     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
46838     move-result-object v3
46840     aput-object v3, v1, v2
46842     const/4 v2, 0x3
46844     const-string v3, "user\'s request after error"
46846     aput-object v3, v1, v2
46848     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
46850     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
46852     invoke-static {v0}, Landroid/os/Process;->killProcessQuiet(I)V
46854     :cond_6f
46855     monitor-exit p0
46857     return-void
46859     :catchall_71
46860     move-exception v0
46862     monitor-exit p0
46863     :try_end_73
46864     .catchall {:try_start_2 .. :try_end_73} :catchall_71
46866     throw v0
46867 .end method
46869 .method public killApplicationProcess(Ljava/lang/String;I)V
46870     .registers 8
46872     if-nez p1, :cond_3
46874     :goto_2
46875     return-void
46877     :cond_3
46878     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
46880     move-result v1
46882     const/16 v2, 0x3e8
46884     if-ne v1, v2, :cond_43
46886     monitor-enter p0
46888     :try_start_c
46889     invoke-virtual {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
46891     move-result-object v0
46893     if-eqz v0, :cond_20
46895     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46896     :try_end_14
46897     .catchall {:try_start_c .. :try_end_14} :catchall_1d
46899     if-eqz v2, :cond_20
46901     :try_start_16
46902     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46904     invoke-interface {v2}, Landroid/app/IApplicationThread;->scheduleSuicide()V
46905     :try_end_1b
46906     .catchall {:try_start_16 .. :try_end_1b} :catchall_1d
46907     .catch Landroid/os/RemoteException; {:try_start_16 .. :try_end_1b} :catch_60
46909     :goto_1b
46910     :try_start_1b
46911     monitor-exit p0
46913     goto :goto_2
46915     :catchall_1d
46916     move-exception v2
46918     monitor-exit p0
46919     :try_end_1f
46920     .catchall {:try_start_1b .. :try_end_1f} :catchall_1d
46922     throw v2
46924     :cond_20
46925     :try_start_20
46926     const-string v2, "ActivityManager"
46928     new-instance v3, Ljava/lang/StringBuilder;
46930     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
46932     const-string v4, "Process/uid not found attempting kill of "
46934     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46936     move-result-object v3
46938     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46940     move-result-object v3
46942     const-string v4, " / "
46944     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46946     move-result-object v3
46948     invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
46950     move-result-object v3
46952     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46954     move-result-object v3
46956     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
46957     :try_end_42
46958     .catchall {:try_start_20 .. :try_end_42} :catchall_1d
46960     goto :goto_1b
46962     :cond_43
46963     new-instance v2, Ljava/lang/SecurityException;
46965     new-instance v3, Ljava/lang/StringBuilder;
46967     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
46969     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
46971     move-result-object v3
46973     const-string v4, " cannot kill app process: "
46975     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46977     move-result-object v3
46979     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46981     move-result-object v3
46983     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46985     move-result-object v3
46987     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
46989     throw v2
46991     :catch_60
46992     move-exception v2
46994     goto :goto_1b
46995 .end method
46997 .method public killApplicationWithUid(Ljava/lang/String;I)V
46998     .registers 8
47000     if-nez p1, :cond_3
47002     :goto_2
47003     return-void
47005     :cond_3
47006     if-gez p2, :cond_1e
47008     const-string v2, "ActivityManager"
47010     new-instance v3, Ljava/lang/StringBuilder;
47012     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
47014     const-string v4, "Invalid uid specified for pkg : "
47016     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47018     move-result-object v3
47020     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47022     move-result-object v3
47024     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47026     move-result-object v3
47028     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47030     goto :goto_2
47032     :cond_1e
47033     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47035     move-result v0
47037     const/16 v2, 0x3e8
47039     if-ne v0, v2, :cond_3b
47041     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
47043     const/16 v3, 0x16
47045     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
47047     move-result-object v1
47049     iput p2, v1, Landroid/os/Message;->arg1:I
47051     const/4 v2, 0x0
47053     iput v2, v1, Landroid/os/Message;->arg2:I
47055     iput-object p1, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
47057     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
47059     invoke-virtual {v2, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
47061     goto :goto_2
47063     :cond_3b
47064     new-instance v2, Ljava/lang/SecurityException;
47066     new-instance v3, Ljava/lang/StringBuilder;
47068     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
47070     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47072     move-result-object v3
47074     const-string v4, " cannot kill pkg: "
47076     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47078     move-result-object v3
47080     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47082     move-result-object v3
47084     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47086     move-result-object v3
47088     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47090     throw v2
47091 .end method
47093 .method public killBackgroundProcesses(Ljava/lang/String;)V
47094     .registers 16
47096     const-string v0, "android.permission.KILL_BACKGROUND_PROCESSES"
47098     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
47100     move-result v0
47102     if-eqz v0, :cond_4c
47104     const-string v0, "android.permission.RESTART_PACKAGES"
47106     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
47108     move-result v0
47110     if-eqz v0, :cond_4c
47112     new-instance v0, Ljava/lang/StringBuilder;
47114     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
47116     const-string v1, "Permission Denial: killBackgroundProcesses() from pid="
47118     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47120     move-result-object v0
47122     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47124     move-result v1
47126     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47128     move-result-object v0
47130     const-string v1, ", uid="
47132     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47134     move-result-object v0
47136     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47138     move-result v1
47140     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47142     move-result-object v0
47144     const-string v1, " requires "
47146     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47148     move-result-object v0
47150     const-string v1, "android.permission.KILL_BACKGROUND_PROCESSES"
47152     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47154     move-result-object v0
47156     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47158     move-result-object v11
47160     const-string v0, "ActivityManager"
47162     invoke-static {v0, v11}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47164     new-instance v0, Ljava/lang/SecurityException;
47166     invoke-direct {v0, v11}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47168     throw v0
47170     :cond_4c
47171     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
47173     move-result v13
47175     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
47177     move-result-wide v9
47179     :try_start_54
47180     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
47182     move-result-object v12
47184     const/4 v2, -0x1
47186     monitor-enter p0
47187     :try_end_5a
47188     .catchall {:try_start_54 .. :try_end_5a} :catchall_8f
47190     :try_start_5a
47191     invoke-interface {v12, p1, v13}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
47192     :try_end_5d
47193     .catchall {:try_start_5a .. :try_end_5d} :catchall_8c
47194     .catch Landroid/os/RemoteException; {:try_start_5a .. :try_end_5d} :catch_94
47196     move-result v2
47198     :goto_5e
47199     const/4 v0, -0x1
47201     if-ne v2, v0, :cond_7e
47203     :try_start_61
47204     const-string v0, "ActivityManager"
47206     new-instance v1, Ljava/lang/StringBuilder;
47208     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
47210     const-string v3, "Invalid packageName: "
47212     invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47214     move-result-object v1
47216     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47218     move-result-object v1
47220     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47222     move-result-object v1
47224     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47226     monitor-exit p0
47227     :try_end_7a
47228     .catchall {:try_start_61 .. :try_end_7a} :catchall_8c
47230     :goto_7a
47231     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47233     return-void
47235     :cond_7e
47236     const/4 v3, 0x5
47238     const/4 v4, 0x0
47240     const/4 v5, 0x1
47242     const/4 v6, 0x1
47244     const/4 v7, 0x0
47246     :try_start_83
47247     const-string v8, "kill background"
47249     move-object v0, p0
47251     move-object v1, p1
47253     invoke-direct/range {v0 .. v8}, Lcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIZZZZLjava/lang/String;)Z
47255     monitor-exit p0
47257     goto :goto_7a
47259     :catchall_8c
47260     move-exception v0
47262     monitor-exit p0
47263     :try_end_8e
47264     .catchall {:try_start_83 .. :try_end_8e} :catchall_8c
47266     :try_start_8e
47267     throw v0
47268     :try_end_8f
47269     .catchall {:try_start_8e .. :try_end_8f} :catchall_8f
47271     :catchall_8f
47272     move-exception v0
47274     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47276     throw v0
47278     :catch_94
47279     move-exception v0
47281     goto :goto_5e
47282 .end method
47284 .method public killPids([ILjava/lang/String;Z)Z
47285     .registers 17
47287     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47289     move-result v8
47291     const/16 v9, 0x3e8
47293     if-eq v8, v9, :cond_10
47295     new-instance v8, Ljava/lang/SecurityException;
47297     const-string v9, "killPids only available to the system"
47299     invoke-direct {v8, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47301     throw v8
47303     :cond_10
47304     if-nez p2, :cond_36
47306     const-string v4, "Unknown"
47308     :goto_14
47309     const/4 v2, 0x0
47311     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
47313     monitor-enter v9
47315     :try_start_18
47316     array-length v8, p1
47318     new-array v6, v8, [I
47320     const/4 v7, 0x0
47322     const/4 v1, 0x0
47324     :goto_1d
47325     array-length v8, p1
47327     if-ge v1, v8, :cond_38
47329     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
47331     aget v10, p1, v1
47333     invoke-virtual {v8, v10}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
47335     move-result-object v3
47337     check-cast v3, Lcom/android/server/am/ProcessRecord;
47339     if-eqz v3, :cond_33
47341     iget v5, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
47343     aput v5, v6, v1
47345     if-le v5, v7, :cond_33
47347     move v7, v5
47349     :cond_33
47350     add-int/lit8 v1, v1, 0x1
47352     goto :goto_1d
47354     :cond_36
47355     move-object v4, p2
47357     goto :goto_14
47359     :cond_38
47360     const/16 v8, 0xf
47362     if-ge v7, v8, :cond_42
47364     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
47366     if-le v7, v8, :cond_42
47368     sget v7, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
47370     :cond_42
47371     if-nez p3, :cond_48
47373     const/4 v8, 0x5
47375     if-ge v7, v8, :cond_48
47377     const/4 v7, 0x5
47379     :cond_48
47380     const-string v8, "ActivityManager"
47382     new-instance v10, Ljava/lang/StringBuilder;
47384     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
47386     const-string v11, "Killing processes "
47388     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47390     move-result-object v10
47392     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47394     move-result-object v10
47396     const-string v11, " at adjustment "
47398     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47400     move-result-object v10
47402     invoke-virtual {v10, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47404     move-result-object v10
47406     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47408     move-result-object v10
47410     invoke-static {v8, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47412     const/4 v1, 0x0
47414     :goto_6b
47415     array-length v8, p1
47417     if-ge v1, v8, :cond_de
47419     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
47421     aget v10, p1, v1
47423     invoke-virtual {v8, v10}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
47425     move-result-object v3
47427     check-cast v3, Lcom/android/server/am/ProcessRecord;
47429     if-nez v3, :cond_7d
47431     :cond_7a
47432     :goto_7a
47433     add-int/lit8 v1, v1, 0x1
47435     goto :goto_6b
47437     :cond_7d
47438     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
47440     if-lt v0, v7, :cond_7a
47442     iget-boolean v8, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
47444     if-nez v8, :cond_7a
47446     const-string v8, "ActivityManager"
47448     new-instance v10, Ljava/lang/StringBuilder;
47450     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
47452     const-string v11, "Killing "
47454     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47456     move-result-object v10
47458     invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47460     move-result-object v10
47462     const-string v11, " (adj "
47464     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47466     move-result-object v10
47468     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47470     move-result-object v10
47472     const-string v11, "): "
47474     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47476     move-result-object v10
47478     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47480     move-result-object v10
47482     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47484     move-result-object v10
47486     invoke-static {v8, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47488     const/16 v8, 0x7547
47490     const/4 v10, 0x4
47492     new-array v10, v10, [Ljava/lang/Object;
47494     const/4 v11, 0x0
47496     iget v12, v3, Lcom/android/server/am/ProcessRecord;->pid:I
47498     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
47500     move-result-object v12
47502     aput-object v12, v10, v11
47504     const/4 v11, 0x1
47506     iget-object v12, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
47508     aput-object v12, v10, v11
47510     const/4 v11, 0x2
47512     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
47514     move-result-object v12
47516     aput-object v12, v10, v11
47518     const/4 v11, 0x3
47520     aput-object v4, v10, v11
47522     invoke-static {v8, v10}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
47524     const/4 v2, 0x1
47526     const/4 v8, 0x1
47528     iput-boolean v8, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
47530     aget v8, p1, v1
47532     invoke-static {v8}, Landroid/os/Process;->killProcessQuiet(I)V
47534     goto :goto_7a
47536     :catchall_db
47537     move-exception v8
47539     monitor-exit v9
47540     :try_end_dd
47541     .catchall {:try_start_18 .. :try_end_dd} :catchall_db
47543     throw v8
47545     :cond_de
47546     :try_start_de
47547     monitor-exit v9
47548     :try_end_df
47549     .catchall {:try_start_de .. :try_end_df} :catchall_db
47551     return v2
47552 .end method
47554 .method public killProcessesBelowForeground(Ljava/lang/String;)Z
47555     .registers 4
47557     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47559     move-result v0
47561     const/16 v1, 0x3e8
47563     if-eq v0, v1, :cond_10
47565     new-instance v0, Ljava/lang/SecurityException;
47567     const-string v1, "killProcessesBelowForeground() only available to system"
47569     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47571     throw v0
47573     :cond_10
47574     const/4 v0, 0x0
47576     invoke-direct {p0, v0, p1}, Lcom/android/server/am/ActivityManagerService;->killProcessesBelowAdj(ILjava/lang/String;)Z
47578     move-result v0
47580     return v0
47581 .end method
47583 .method final logAppTooSlow(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;)V
47584     .registers 5
47586     return-void
47587 .end method
47589 .method makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
47590     .registers 9
47592     new-instance v4, Landroid/app/ActivityManager$RunningServiceInfo;
47594     invoke-direct {v4}, Landroid/app/ActivityManager$RunningServiceInfo;-><init>()V
47596     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
47598     iput-object v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->service:Landroid/content/ComponentName;
47600     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47602     if-eqz v5, :cond_13
47604     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47606     iget v5, v5, Lcom/android/server/am/ProcessRecord;->pid:I
47608     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->pid:I
47610     :cond_13
47611     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
47613     iget v5, v5, Landroid/content/pm/ApplicationInfo;->uid:I
47615     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->uid:I
47617     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->processName:Ljava/lang/String;
47619     iput-object v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->process:Ljava/lang/String;
47621     iget-boolean v5, p1, Lcom/android/server/am/ServiceRecord;->isForeground:Z
47623     iput-boolean v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->foreground:Z
47625     iget-wide v5, p1, Lcom/android/server/am/ServiceRecord;->createTime:J
47627     iput-wide v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->activeSince:J
47629     iget-boolean v5, p1, Lcom/android/server/am/ServiceRecord;->startRequested:Z
47631     iput-boolean v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->started:Z
47633     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
47635     invoke-virtual {v5}, Ljava/util/HashMap;->size()I
47637     move-result v5
47639     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->clientCount:I
47641     iget v5, p1, Lcom/android/server/am/ServiceRecord;->crashCount:I
47643     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->crashCount:I
47645     iget-wide v5, p1, Lcom/android/server/am/ServiceRecord;->lastActivity:J
47647     iput-wide v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->lastActivityTime:J
47649     iget-boolean v5, p1, Lcom/android/server/am/ServiceRecord;->isForeground:Z
47651     if-eqz v5, :cond_43
47653     iget v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47655     or-int/lit8 v5, v5, 0x2
47657     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47659     :cond_43
47660     iget-boolean v5, p1, Lcom/android/server/am/ServiceRecord;->startRequested:Z
47662     if-eqz v5, :cond_4d
47664     iget v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47666     or-int/lit8 v5, v5, 0x1
47668     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47670     :cond_4d
47671     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47673     if-eqz v5, :cond_5f
47675     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47677     iget v5, v5, Lcom/android/server/am/ProcessRecord;->pid:I
47679     sget v6, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
47681     if-ne v5, v6, :cond_5f
47683     iget v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47685     or-int/lit8 v5, v5, 0x4
47687     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47689     :cond_5f
47690     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47692     if-eqz v5, :cond_6f
47694     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
47696     iget-boolean v5, v5, Lcom/android/server/am/ProcessRecord;->persistent:Z
47698     if-eqz v5, :cond_6f
47700     iget v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47702     or-int/lit8 v5, v5, 0x8
47704     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->flags:I
47706     :cond_6f
47707     iget-object v5, p1, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
47709     invoke-virtual {v5}, Ljava/util/HashMap;->values()Ljava/util/Collection;
47711     move-result-object v5
47713     invoke-interface {v5}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
47715     move-result-object v3
47717     :cond_79
47718     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
47720     move-result v5
47722     if-eqz v5, :cond_a4
47724     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
47726     move-result-object v1
47728     check-cast v1, Ljava/util/ArrayList;
47730     const/4 v2, 0x0
47732     :goto_86
47733     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
47735     move-result v5
47737     if-ge v2, v5, :cond_79
47739     invoke-virtual {v1, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
47741     move-result-object v0
47743     check-cast v0, Lcom/android/server/am/ConnectionRecord;
47745     iget v5, v0, Lcom/android/server/am/ConnectionRecord;->clientLabel:I
47747     if-eqz v5, :cond_a5
47749     iget-object v5, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
47751     iget-object v5, v5, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
47753     iget-object v5, v5, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
47755     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
47757     iput-object v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->clientPackage:Ljava/lang/String;
47759     iget v5, v0, Lcom/android/server/am/ConnectionRecord;->clientLabel:I
47761     iput v5, v4, Landroid/app/ActivityManager$RunningServiceInfo;->clientLabel:I
47763     :cond_a4
47764     return-object v4
47766     :cond_a5
47767     add-int/lit8 v2, v2, 0x1
47769     goto :goto_86
47770 .end method
47772 .method public monitor()V
47773     .registers 2
47775     monitor-enter p0
47777     :try_start_1
47778     monitor-exit p0
47780     return-void
47782     :catchall_3
47783     move-exception v0
47785     monitor-exit p0
47786     :try_end_5
47787     .catchall {:try_start_1 .. :try_end_5} :catchall_3
47789     throw v0
47790 .end method
47792 .method public moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
47793     .registers 8
47795     const/4 v3, 0x0
47797     const-string v4, "moveActivityTaskToBack"
47799     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
47801     monitor-enter p0
47803     :try_start_7
47804     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
47806     move-result-wide v0
47808     if-nez p2, :cond_1d
47810     const/4 v4, 0x1
47812     :goto_e
47813     invoke-virtual {p0, p1, v4}, Lcom/android/server/am/ActivityManagerService;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
47815     move-result v2
47817     if-ltz v2, :cond_1f
47819     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
47821     const/4 v4, 0x0
47823     invoke-virtual {v3, v2, v4}, Lcom/android/server/am/ActivityStack;->moveTaskToBackLocked(ILcom/android/server/am/ActivityRecord;)Z
47825     move-result v3
47827     monitor-exit p0
47829     :goto_1c
47830     return v3
47832     :cond_1d
47833     move v4, v3
47835     goto :goto_e
47837     :cond_1f
47838     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47840     monitor-exit p0
47842     goto :goto_1c
47844     :catchall_24
47845     move-exception v3
47847     monitor-exit p0
47848     :try_end_26
47849     .catchall {:try_start_7 .. :try_end_26} :catchall_24
47851     throw v3
47852 .end method
47854 .method public moveTaskBackwards(I)V
47855     .registers 7
47857     const-string v2, "android.permission.REORDER_TASKS"
47859     const-string v3, "moveTaskBackwards()"
47861     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
47863     monitor-enter p0
47865     :try_start_8
47866     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47868     move-result v2
47870     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47872     move-result v3
47874     const-string v4, "Task backwards"
47876     invoke-virtual {p0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
47878     move-result v2
47880     if-nez v2, :cond_1a
47882     monitor-exit p0
47884     :goto_19
47885     return-void
47887     :cond_1a
47888     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
47890     move-result-wide v0
47892     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->moveTaskBackwardsLocked(I)V
47894     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47896     monitor-exit p0
47898     goto :goto_19
47900     :catchall_26
47901     move-exception v2
47903     monitor-exit p0
47904     :try_end_28
47905     .catchall {:try_start_8 .. :try_end_28} :catchall_26
47907     throw v2
47908 .end method
47910 .method public moveTaskToBack(I)V
47911     .registers 7
47913     const-string v2, "android.permission.REORDER_TASKS"
47915     const-string v3, "moveTaskToBack()"
47917     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
47919     monitor-enter p0
47921     :try_start_8
47922     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
47924     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
47926     if-eqz v2, :cond_2a
47928     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
47930     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
47932     iget-object v2, v2, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
47934     iget v2, v2, Lcom/android/server/am/TaskRecord;->taskId:I
47936     if-ne v2, p1, :cond_2a
47938     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47940     move-result v2
47942     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47944     move-result v3
47946     const-string v4, "Task to back"
47948     invoke-virtual {p0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
47950     move-result v2
47952     if-nez v2, :cond_2a
47954     monitor-exit p0
47956     :goto_29
47957     return-void
47959     :cond_2a
47960     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
47962     move-result-wide v0
47964     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
47966     const/4 v3, 0x0
47968     invoke-virtual {v2, p1, v3}, Lcom/android/server/am/ActivityStack;->moveTaskToBackLocked(ILcom/android/server/am/ActivityRecord;)Z
47970     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47972     monitor-exit p0
47974     goto :goto_29
47976     :catchall_39
47977     move-exception v2
47979     monitor-exit p0
47980     :try_end_3b
47981     .catchall {:try_start_8 .. :try_end_3b} :catchall_39
47983     throw v2
47984 .end method
47986 .method public moveTaskToFront(IILandroid/os/Bundle;)V
47987     .registers 12
47989     const-string v5, "android.permission.REORDER_TASKS"
47991     const-string v6, "moveTaskToFront()"
47993     invoke-virtual {p0, v5, v6}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
47995     monitor-enter p0
47997     :try_start_8
47998     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
48000     move-result v5
48002     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
48004     move-result v6
48006     const-string v7, "Task to front"
48008     invoke-virtual {p0, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
48010     move-result v5
48012     if-nez v5, :cond_1d
48014     invoke-static {p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
48016     monitor-exit p0
48018     :goto_1c
48019     return-void
48021     :cond_1d
48022     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
48023     :try_end_20
48024     .catchall {:try_start_8 .. :try_end_20} :catchall_44
48026     move-result-wide v2
48028     :try_start_21
48029     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
48031     move-result-object v4
48033     if-eqz v4, :cond_47
48035     and-int/lit8 v5, p2, 0x2
48037     if-nez v5, :cond_30
48039     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48041     const/4 v6, 0x1
48043     iput-boolean v6, v5, Lcom/android/server/am/ActivityStack;->mUserLeaving:Z
48045     :cond_30
48046     and-int/lit8 v5, p2, 0x1
48048     if-eqz v5, :cond_39
48050     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48052     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->moveHomeToFrontLocked()V
48054     :cond_39
48055     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48057     const/4 v6, 0x0
48059     invoke-virtual {v5, v4, v6, p3}, Lcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;)V
48060     :try_end_3f
48061     .catchall {:try_start_21 .. :try_end_3f} :catchall_85
48063     :try_start_3f
48064     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48066     monitor-exit p0
48068     goto :goto_1c
48070     :catchall_44
48071     move-exception v5
48073     monitor-exit p0
48074     :try_end_46
48075     .catchall {:try_start_3f .. :try_end_46} :catchall_44
48077     throw v5
48079     :cond_47
48080     :try_start_47
48081     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48083     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
48085     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
48087     move-result v5
48089     add-int/lit8 v1, v5, -0x1
48091     :goto_51
48092     if-ltz v1, :cond_8a
48094     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48096     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
48098     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48100     move-result-object v0
48102     check-cast v0, Lcom/android/server/am/ActivityRecord;
48104     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48106     iget v5, v5, Lcom/android/server/am/TaskRecord;->taskId:I
48108     if-ne v5, p1, :cond_82
48110     and-int/lit8 v5, p2, 0x2
48112     if-nez v5, :cond_6c
48114     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48116     const/4 v6, 0x1
48118     iput-boolean v6, v5, Lcom/android/server/am/ActivityStack;->mUserLeaving:Z
48120     :cond_6c
48121     and-int/lit8 v5, p2, 0x1
48123     if-eqz v5, :cond_75
48125     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48127     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->moveHomeToFrontLocked()V
48129     :cond_75
48130     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48132     iget-object v6, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48134     const/4 v7, 0x0
48136     invoke-virtual {v5, v6, v7, p3}, Lcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;)V
48137     :try_end_7d
48138     .catchall {:try_start_47 .. :try_end_7d} :catchall_85
48140     :try_start_7d
48141     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48143     monitor-exit p0
48145     goto :goto_1c
48147     :cond_82
48148     add-int/lit8 v1, v1, -0x1
48150     goto :goto_51
48152     :catchall_85
48153     move-exception v5
48155     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48157     throw v5
48159     :cond_8a
48160     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48162     invoke-static {p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
48164     monitor-exit p0
48165     :try_end_91
48166     .catchall {:try_start_7d .. :try_end_91} :catchall_44
48168     goto :goto_1c
48169 .end method
48171 .method public navigateUpTo(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/Intent;)Z
48172     .registers 39
48174     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
48176     move-result-object v16
48178     monitor-enter p0
48180     :try_start_5
48181     invoke-static/range {p1 .. p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
48183     move-result-object v31
48185     if-nez v31, :cond_f
48187     const/16 v20, 0x0
48189     monitor-exit p0
48191     :goto_e
48192     return v20
48194     :cond_f
48195     move-object/from16 v0, v31
48197     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
48199     iget-object v0, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
48201     move-object/from16 v21, v0
48203     move-object/from16 v0, v21
48205     move-object/from16 v1, v31
48207     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
48209     move-result v32
48211     if-gez v32, :cond_28
48213     const/16 v20, 0x0
48215     monitor-exit p0
48217     goto :goto_e
48219     :catchall_25
48220     move-exception v2
48222     monitor-exit p0
48223     :try_end_27
48224     .catchall {:try_start_5 .. :try_end_27} :catchall_25
48226     throw v2
48228     :cond_28
48229     add-int/lit8 v19, v32, -0x1
48231     const/16 v26, 0x0
48233     const/16 v20, 0x0
48235     if-eqz v16, :cond_5a
48237     :try_start_30
48238     move-object/from16 v0, v31
48240     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48242     move-object/from16 v33, v0
48244     add-int/lit8 v22, v32, -0x1
48246     :goto_38
48247     if-ltz v22, :cond_5a
48249     invoke-virtual/range {v21 .. v22}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48251     move-result-object v28
48253     check-cast v28, Lcom/android/server/am/ActivityRecord;
48255     move-object/from16 v0, v28
48257     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48259     move-object/from16 v0, v33
48261     if-eq v0, v2, :cond_81
48263     add-int/lit8 v2, v32, -0x1
48265     add-int/lit8 v3, v22, 0x1
48267     invoke-static {v2, v3}, Ljava/lang/Math;->min(II)I
48269     move-result v19
48271     move-object/from16 v0, v21
48273     move/from16 v1, v19
48275     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48277     move-result-object v26
48279     check-cast v26, Lcom/android/server/am/ActivityRecord;
48281     :cond_5a
48282     :goto_5a
48283     move-object/from16 v0, p0
48285     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
48287     if-eqz v2, :cond_b2
48289     move-object/from16 v0, p0
48291     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48293     const/4 v3, 0x0
48295     move-object/from16 v0, p1
48297     invoke-virtual {v2, v0, v3}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Landroid/os/IBinder;I)Lcom/android/server/am/ActivityRecord;
48298     :try_end_6a
48299     .catchall {:try_start_30 .. :try_end_6a} :catchall_25
48301     move-result-object v23
48303     if-eqz v23, :cond_b2
48305     const/16 v30, 0x1
48307     :try_start_6f
48308     move-object/from16 v0, p0
48310     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
48312     move-object/from16 v0, v23
48314     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
48316     invoke-interface {v2, v3}, Landroid/app/IActivityController;->activityResuming(Ljava/lang/String;)Z
48317     :try_end_7a
48318     .catchall {:try_start_6f .. :try_end_7a} :catchall_25
48319     .catch Landroid/os/RemoteException; {:try_start_6f .. :try_end_7a} :catch_ab
48321     move-result v30
48323     :goto_7b
48324     if-nez v30, :cond_b2
48326     const/16 v20, 0x0
48328     :try_start_7f
48329     monitor-exit p0
48331     goto :goto_e
48333     :cond_81
48334     move-object/from16 v0, v28
48336     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
48338     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
48340     invoke-virtual/range {v16 .. v16}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
48342     move-result-object v3
48344     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
48346     move-result v2
48348     if-eqz v2, :cond_a8
48350     move-object/from16 v0, v28
48352     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
48354     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
48356     invoke-virtual/range {v16 .. v16}, Landroid/content/ComponentName;->getClassName()Ljava/lang/String;
48358     move-result-object v3
48360     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
48362     move-result v2
48364     if-eqz v2, :cond_a8
48366     move/from16 v19, v22
48368     move-object/from16 v26, v28
48370     const/16 v20, 0x1
48372     goto :goto_5a
48374     :cond_a8
48375     add-int/lit8 v22, v22, -0x1
48377     goto :goto_38
48379     :catch_ab
48380     move-exception v18
48382     const/4 v2, 0x0
48384     move-object/from16 v0, p0
48386     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
48388     goto :goto_7b
48390     :cond_b2
48391     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
48393     move-result-wide v24
48395     move/from16 v22, v32
48397     :goto_b8
48398     move/from16 v0, v22
48400     move/from16 v1, v19
48402     if-le v0, v1, :cond_dc
48404     invoke-virtual/range {v21 .. v22}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48406     move-result-object v28
48408     check-cast v28, Lcom/android/server/am/ActivityRecord;
48410     move-object/from16 v0, p0
48412     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48414     move-object/from16 v0, v28
48416     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
48418     const-string v4, "navigate-up"
48420     move/from16 v0, p3
48422     move-object/from16 v1, p4
48424     invoke-virtual {v2, v3, v0, v1, v4}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;)Z
48426     const/16 p3, 0x0
48428     const/16 p4, 0x0
48430     add-int/lit8 v22, v22, -0x1
48432     goto :goto_b8
48434     :cond_dc
48435     if-eqz v26, :cond_110
48437     if-eqz v20, :cond_110
48439     move-object/from16 v0, v26
48441     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
48443     iget v0, v2, Landroid/content/pm/ActivityInfo;->launchMode:I
48445     move/from16 v27, v0
48447     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getFlags()I
48449     move-result v17
48451     const/4 v2, 0x3
48453     move/from16 v0, v27
48455     if-eq v0, v2, :cond_101
48457     const/4 v2, 0x2
48459     move/from16 v0, v27
48461     if-eq v0, v2, :cond_101
48463     const/4 v2, 0x1
48465     move/from16 v0, v27
48467     if-eq v0, v2, :cond_101
48469     const/high16 v2, 0x400
48471     and-int v2, v2, v17
48473     if-eqz v2, :cond_116
48475     :cond_101
48476     move-object/from16 v0, v31
48478     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
48480     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
48482     iget v2, v2, Landroid/content/pm/ApplicationInfo;->uid:I
48484     move-object/from16 v0, v26
48486     move-object/from16 v1, p2
48488     invoke-virtual {v0, v2, v1}, Lcom/android/server/am/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;)V
48490     :cond_110
48491     :goto_110
48492     invoke-static/range {v24 .. v25}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48494     monitor-exit p0
48495     :try_end_114
48496     .catchall {:try_start_7f .. :try_end_114} :catchall_25
48498     goto/16 :goto_e
48500     :cond_116
48501     :try_start_116
48502     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
48504     move-result-object v2
48506     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
48508     move-result-object v3
48510     const/4 v4, 0x0
48512     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
48514     move-result v5
48516     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
48518     move-result-object v6
48520     move-object/from16 v0, p0
48522     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48524     move-object/from16 v0, v31
48526     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
48528     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
48530     const/4 v5, 0x0
48532     move-object/from16 v0, v26
48534     iget-object v7, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
48536     const/4 v8, 0x0
48538     const/4 v9, 0x0
48540     const/4 v10, -0x1
48542     move-object/from16 v0, v26
48544     iget v11, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
48546     const/4 v12, 0x0
48548     const/4 v13, 0x0
48550     const/4 v14, 0x1
48552     const/4 v15, 0x0
48554     move-object/from16 v4, p2
48556     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
48557     :try_end_146
48558     .catchall {:try_start_116 .. :try_end_146} :catchall_25
48559     .catch Landroid/os/RemoteException; {:try_start_116 .. :try_end_146} :catch_160
48561     move-result v29
48563     if-nez v29, :cond_15d
48565     const/16 v20, 0x1
48567     :goto_14b
48568     :try_start_14b
48569     move-object/from16 v0, p0
48571     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48573     move-object/from16 v0, v26
48575     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
48577     const-string v4, "navigate-up"
48579     move/from16 v0, p3
48581     move-object/from16 v1, p4
48583     invoke-virtual {v2, v3, v0, v1, v4}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;)Z
48584     :try_end_15c
48585     .catchall {:try_start_14b .. :try_end_15c} :catchall_25
48587     goto :goto_110
48589     :cond_15d
48590     const/16 v20, 0x0
48592     goto :goto_14b
48594     :catch_160
48595     move-exception v18
48597     const/16 v20, 0x0
48599     goto :goto_14b
48600 .end method
48602 .method final newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
48603     .registers 14
48605     const v3, 0x182b8
48607     if-eqz p3, :cond_49
48609     move-object v4, p3
48611     :goto_6
48612     const/4 v1, 0x0
48614     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
48616     invoke-virtual {v0}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
48618     move-result-object v6
48620     iget v5, p2, Landroid/content/pm/ApplicationInfo;->uid:I
48622     if-eqz p4, :cond_39
48624     invoke-static {v5}, Landroid/os/UserId;->getUserId(I)I
48626     move-result v8
48628     const/16 v7, 0x3e8
48630     const/4 v5, 0x0
48632     :cond_18
48633     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48635     if-lt v0, v3, :cond_23
48637     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48639     const v2, 0x1869f
48641     if-le v0, v2, :cond_25
48643     :cond_23
48644     iput v3, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48646     :cond_25
48647     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48649     invoke-static {v8, v0}, Landroid/os/UserId;->getUid(II)I
48651     move-result v5
48653     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48655     add-int/lit8 v0, v0, 0x1
48657     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
48659     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
48661     invoke-virtual {v0, v5}, Landroid/util/SparseArray;->indexOfKey(I)I
48663     move-result v0
48665     if-gez v0, :cond_4c
48667     :cond_39
48668     monitor-enter v6
48670     :try_start_3a
48671     iget v0, p2, Landroid/content/pm/ApplicationInfo;->uid:I
48673     invoke-virtual {v6, v0, v4}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
48675     move-result-object v1
48677     monitor-exit v6
48678     :try_end_41
48679     .catchall {:try_start_3a .. :try_end_41} :catchall_52
48681     new-instance v0, Lcom/android/server/am/ProcessRecord;
48683     move-object v2, p1
48685     move-object v3, p2
48687     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V
48689     :goto_48
48690     return-object v0
48692     :cond_49
48693     iget-object v4, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
48695     goto :goto_6
48697     :cond_4c
48698     add-int/lit8 v7, v7, -0x1
48700     if-gtz v7, :cond_18
48702     const/4 v0, 0x0
48704     goto :goto_48
48706     :catchall_52
48707     move-exception v0
48709     :try_start_53
48710     monitor-exit v6
48711     :try_end_54
48712     .catchall {:try_start_53 .. :try_end_54} :catchall_52
48714     throw v0
48715 .end method
48717 .method public newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
48718     .registers 4
48720     const-string v1, "newUriPermissionOwner"
48722     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
48724     monitor-enter p0
48726     :try_start_6
48727     new-instance v0, Lcom/android/server/am/UriPermissionOwner;
48729     invoke-direct {v0, p0, p1}, Lcom/android/server/am/UriPermissionOwner;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/Object;)V
48731     invoke-virtual {v0}, Lcom/android/server/am/UriPermissionOwner;->getExternalTokenLocked()Landroid/os/Binder;
48733     move-result-object v1
48735     monitor-exit p0
48737     return-object v1
48739     :catchall_11
48740     move-exception v1
48742     monitor-exit p0
48743     :try_end_13
48744     .catchall {:try_start_6 .. :try_end_13} :catchall_11
48746     throw v1
48747 .end method
48749 .method public noteWakeupAlarm(Landroid/content/IIntentSender;)V
48750     .registers 9
48752     instance-of v6, p1, Lcom/android/server/am/PendingIntentRecord;
48754     if-nez v6, :cond_5
48756     :goto_4
48757     return-void
48759     :cond_5
48760     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
48762     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
48764     move-result-object v4
48766     monitor-enter v4
48768     :try_start_c
48769     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
48771     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->isOnBattery()Z
48773     move-result v6
48775     if-eqz v6, :cond_32
48777     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
48779     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V
48781     move-object v0, p1
48783     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
48785     move-object v3, v0
48787     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
48789     move-result v1
48791     iget v6, v3, Lcom/android/server/am/PendingIntentRecord;->uid:I
48793     if-ne v6, v1, :cond_37
48795     const/16 v5, 0x3e8
48797     :goto_27
48798     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
48800     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
48802     invoke-virtual {v4, v5, v6}, Lcom/android/internal/os/BatteryStatsImpl;->getPackageStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;
48804     move-result-object v2
48806     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->incWakeupsLocked()V
48808     :cond_32
48809     monitor-exit v4
48811     goto :goto_4
48813     :catchall_34
48814     move-exception v6
48816     monitor-exit v4
48817     :try_end_36
48818     .catchall {:try_start_c .. :try_end_36} :catchall_34
48820     throw v6
48822     :cond_37
48823     :try_start_37
48824     iget v5, v3, Lcom/android/server/am/PendingIntentRecord;->uid:I
48825     :try_end_39
48826     .catchall {:try_start_37 .. :try_end_39} :catchall_34
48828     goto :goto_27
48829 .end method
48831 .method onCoreSettingsChange(Landroid/os/Bundle;)V
48832     .registers 5
48834     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
48836     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
48838     move-result v2
48840     add-int/lit8 v0, v2, -0x1
48842     :goto_8
48843     if-ltz v0, :cond_1e
48845     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
48847     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48849     move-result-object v1
48851     check-cast v1, Lcom/android/server/am/ProcessRecord;
48853     :try_start_12
48854     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
48856     if-eqz v2, :cond_1b
48858     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
48860     invoke-interface {v2, p1}, Landroid/app/IApplicationThread;->setCoreSettings(Landroid/os/Bundle;)V
48861     :try_end_1b
48862     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_1b} :catch_1f
48864     :cond_1b
48865     :goto_1b
48866     add-int/lit8 v0, v0, -0x1
48868     goto :goto_8
48870     :cond_1e
48871     return-void
48873     :catch_1f
48874     move-exception v2
48876     goto :goto_1b
48877 .end method
48879 .method public onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
48880     .registers 19
48881     .annotation system Ldalvik/annotation/Throws;
48882         value = {
48883             Landroid/os/RemoteException;
48884         }
48885     .end annotation
48887     const v10, 0x5f535052
48889     if-ne p1, v10, :cond_65
48891     new-instance v9, Ljava/util/ArrayList;
48893     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
48895     monitor-enter p0
48897     :try_start_b
48898     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
48900     invoke-virtual {v10}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
48902     move-result-object v10
48904     invoke-virtual {v10}, Ljava/util/HashMap;->values()Ljava/util/Collection;
48906     move-result-object v10
48908     invoke-interface {v10}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
48910     move-result-object v7
48912     :cond_19
48913     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
48915     move-result v10
48917     if-eqz v10, :cond_42
48919     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
48921     move-result-object v3
48923     check-cast v3, Landroid/util/SparseArray;
48925     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
48927     move-result v1
48929     const/4 v8, 0x0
48931     :goto_2a
48932     if-ge v8, v1, :cond_19
48934     invoke-virtual {v3, v8}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
48936     move-result-object v2
48938     check-cast v2, Lcom/android/server/am/ProcessRecord;
48940     iget-object v10, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
48942     if-eqz v10, :cond_3f
48944     iget-object v10, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
48946     invoke-interface {v10}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
48948     move-result-object v10
48950     invoke-virtual {v9, v10}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
48952     :cond_3f
48953     add-int/lit8 v8, v8, 0x1
48955     goto :goto_2a
48957     :cond_42
48958     monitor-exit p0
48959     :try_end_43
48960     .catchall {:try_start_b .. :try_end_43} :catchall_62
48962     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
48964     move-result v0
48966     const/4 v6, 0x0
48968     :goto_48
48969     if-ge v6, v0, :cond_65
48971     invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;
48973     move-result-object v4
48975     :try_start_4e
48976     invoke-virtual {v9, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48978     move-result-object v10
48980     check-cast v10, Landroid/os/IBinder;
48982     const v11, 0x5f535052
48984     const/4 v12, 0x0
48986     const/4 v13, 0x0
48988     invoke-interface {v10, v11, v4, v12, v13}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
48989     :try_end_5c
48990     .catch Landroid/os/RemoteException; {:try_start_4e .. :try_end_5c} :catch_77
48992     :goto_5c
48993     invoke-virtual {v4}, Landroid/os/Parcel;->recycle()V
48995     add-int/lit8 v6, v6, 0x1
48997     goto :goto_48
48999     :catchall_62
49000     move-exception v10
49002     :try_start_63
49003     monitor-exit p0
49004     :try_end_64
49005     .catchall {:try_start_63 .. :try_end_64} :catchall_62
49007     throw v10
49009     :cond_65
49010     :try_start_65
49011     invoke-super/range {p0 .. p4}, Landroid/app/ActivityManagerNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
49012     :try_end_68
49013     .catch Ljava/lang/RuntimeException; {:try_start_65 .. :try_end_68} :catch_6a
49015     move-result v10
49017     return v10
49019     :catch_6a
49020     move-exception v5
49022     instance-of v10, v5, Ljava/lang/SecurityException;
49024     if-nez v10, :cond_76
49026     const-string v10, "ActivityManager"
49028     const-string v11, "Activity Manager Crash"
49030     invoke-static {v10, v11, v5}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
49032     :cond_76
49033     throw v5
49035     :catch_77
49036     move-exception v10
49038     goto :goto_5c
49039 .end method
49041 .method public openContentUri(Landroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
49042     .registers 10
49043     .annotation system Ldalvik/annotation/Throws;
49044         value = {
49045             Landroid/os/RemoteException;
49046         }
49047     .end annotation
49049     const/4 v7, 0x0
49051     const-string v3, "openContentUri"
49053     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
49055     invoke-virtual {p1}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
49057     move-result-object v1
49059     invoke-direct {p0, v1, v7}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
49061     move-result-object v0
49063     const/4 v2, 0x0
49065     if-eqz v0, :cond_3b
49067     sget-object v3, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
49069     new-instance v4, Lcom/android/server/am/ActivityManagerService$Identity;
49071     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
49073     move-result v5
49075     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
49077     move-result v6
49079     invoke-direct {v4, p0, v5, v6}, Lcom/android/server/am/ActivityManagerService$Identity;-><init>(Lcom/android/server/am/ActivityManagerService;II)V
49081     invoke-virtual {v3, v4}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
49083     :try_start_23
49084     iget-object v3, v0, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
49086     const-string v4, "r"
49088     invoke-interface {v3, p1, v4}, Landroid/content/IContentProvider;->openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
49089     :try_end_2a
49090     .catchall {:try_start_23 .. :try_end_2a} :catchall_34
49091     .catch Ljava/io/FileNotFoundException; {:try_start_23 .. :try_end_2a} :catch_5a
49093     move-result-object v2
49095     sget-object v3, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
49097     :goto_2d
49098     invoke-virtual {v3}, Ljava/lang/ThreadLocal;->remove()V
49100     invoke-direct {p0, v1, v7}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
49102     :goto_33
49103     return-object v2
49105     :catchall_34
49106     move-exception v3
49108     sget-object v4, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
49110     invoke-virtual {v4}, Ljava/lang/ThreadLocal;->remove()V
49112     throw v3
49114     :cond_3b
49115     const-string v3, "ActivityManager"
49117     new-instance v4, Ljava/lang/StringBuilder;
49119     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
49121     const-string v5, "Failed to get provider for authority \'"
49123     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49125     move-result-object v4
49127     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49129     move-result-object v4
49131     const-string v5, "\'"
49133     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49135     move-result-object v4
49137     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
49139     move-result-object v4
49141     invoke-static {v3, v4}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
49143     goto :goto_33
49145     :catch_5a
49146     move-exception v3
49148     sget-object v3, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
49150     goto :goto_2d
49151 .end method
49153 .method public overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
49154     .registers 10
49156     monitor-enter p0
49158     :try_start_1
49159     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
49161     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
49163     move-result-object v2
49165     if-nez v2, :cond_b
49167     monitor-exit p0
49169     :goto_a
49170     return-void
49172     :cond_b
49173     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
49175     move-result-wide v0
49177     iget-object v3, v2, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
49179     sget-object v4, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
49181     if-eq v3, v4, :cond_1b
49183     iget-object v3, v2, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
49185     sget-object v4, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
49187     if-ne v3, v4, :cond_21
49189     :cond_1b
49190     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
49192     const/4 v4, 0x0
49194     invoke-virtual {v3, p2, p3, p4, v4}, Lcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
49196     :cond_21
49197     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
49199     monitor-exit p0
49201     goto :goto_a
49203     :catchall_26
49204     move-exception v3
49206     monitor-exit p0
49207     :try_end_28
49208     .catchall {:try_start_1 .. :try_end_28} :catchall_26
49210     throw v3
49211 .end method
49213 .method public peekService(Landroid/content/Intent;Ljava/lang/String;)Landroid/os/IBinder;
49214     .registers 9
49216     const-string v3, "peekService"
49218     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
49220     if-eqz p1, :cond_16
49222     invoke-virtual {p1}, Landroid/content/Intent;->hasFileDescriptors()Z
49224     move-result v3
49226     const/4 v4, 0x1
49228     if-ne v3, v4, :cond_16
49230     new-instance v3, Ljava/lang/IllegalArgumentException;
49232     const-string v4, "File descriptors passed in Intent"
49234     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
49236     throw v3
49238     :cond_16
49239     const/4 v2, 0x0
49241     monitor-enter p0
49243     :try_start_18
49244     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
49246     move-result v3
49248     invoke-direct {p0, p1, p2, v3}, Lcom/android/server/am/ActivityManagerService;->findServiceLocked(Landroid/content/Intent;Ljava/lang/String;I)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
49250     move-result-object v1
49252     if-eqz v1, :cond_80
49254     iget-object v3, v1, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
49256     if-nez v3, :cond_6e
49258     new-instance v3, Ljava/lang/SecurityException;
49260     new-instance v4, Ljava/lang/StringBuilder;
49262     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
49264     const-string v5, "Permission Denial: Accessing service "
49266     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49268     move-result-object v4
49270     iget-object v5, v1, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
49272     iget-object v5, v5, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
49274     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
49276     move-result-object v4
49278     const-string v5, " from pid="
49280     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49282     move-result-object v4
49284     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
49286     move-result v5
49288     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
49290     move-result-object v4
49292     const-string v5, ", uid="
49294     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49296     move-result-object v4
49298     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
49300     move-result v5
49302     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
49304     move-result-object v4
49306     const-string v5, " requires "
49308     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49310     move-result-object v4
49312     iget-object v5, v1, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->permission:Ljava/lang/String;
49314     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49316     move-result-object v4
49318     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
49320     move-result-object v4
49322     invoke-direct {v3, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
49324     throw v3
49326     :catchall_6b
49327     move-exception v3
49329     monitor-exit p0
49330     :try_end_6d
49331     .catchall {:try_start_18 .. :try_end_6d} :catchall_6b
49333     throw v3
49335     :cond_6e
49336     :try_start_6e
49337     iget-object v3, v1, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
49339     iget-object v3, v3, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
49341     iget-object v4, v1, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
49343     iget-object v4, v4, Lcom/android/server/am/ServiceRecord;->intent:Landroid/content/Intent$FilterComparison;
49345     invoke-virtual {v3, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
49347     move-result-object v0
49349     check-cast v0, Lcom/android/server/am/IntentBindRecord;
49351     if-eqz v0, :cond_80
49353     iget-object v2, v0, Lcom/android/server/am/IntentBindRecord;->binder:Landroid/os/IBinder;
49355     :cond_80
49356     monitor-exit p0
49357     :try_end_81
49358     .catchall {:try_start_6e .. :try_end_81} :catchall_6b
49360     return-object v2
49361 .end method
49363 .method final performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
49364     .registers 4
49366     :try_start_0
49367     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
49369     move-result-wide v0
49371     iput-wide v0, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
49373     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
49375     if-eqz v0, :cond_16
49377     iget-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
49379     if-eqz v0, :cond_17
49381     const/4 v0, 0x0
49383     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
49385     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
49387     invoke-interface {v0}, Landroid/app/IApplicationThread;->scheduleLowMemory()V
49389     :cond_16
49390     :goto_16
49391     return-void
49393     :cond_17
49394     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
49396     invoke-interface {v0}, Landroid/app/IApplicationThread;->processInBackground()V
49397     :try_end_1c
49398     .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_1c} :catch_1d
49400     goto :goto_16
49402     :catch_1d
49403     move-exception v0
49405     goto :goto_16
49406 .end method
49408 .method final performAppGcsIfAppropriateLocked()V
49409     .registers 2
49411     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
49413     move-result v0
49415     if-eqz v0, :cond_a
49417     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->performAppGcsLocked()V
49419     :goto_9
49420     return-void
49422     :cond_a
49423     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
49425     goto :goto_9
49426 .end method
49428 .method final performAppGcsLocked()V
49429     .registers 7
49431     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49433     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
49435     move-result v0
49437     if-gtz v0, :cond_9
49439     :cond_8
49440     :goto_8
49441     return-void
49443     :cond_9
49444     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
49446     move-result v2
49448     if-eqz v2, :cond_8
49450     :cond_f
49451     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49453     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
49455     move-result v2
49457     if-lez v2, :cond_41
49459     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49461     const/4 v3, 0x0
49463     invoke-virtual {v2, v3}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
49465     move-result-object v1
49467     check-cast v1, Lcom/android/server/am/ProcessRecord;
49469     iget v2, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
49471     const/4 v3, 0x2
49473     if-gt v2, v3, :cond_29
49475     iget-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
49477     if-eqz v2, :cond_f
49479     :cond_29
49480     iget-wide v2, v1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
49482     const-wide/32 v4, 0xea60
49484     add-long/2addr v2, v4
49486     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
49488     move-result-wide v4
49490     cmp-long v2, v2, v4
49492     if-gtz v2, :cond_3e
49494     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
49496     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
49498     goto :goto_8
49500     :cond_3e
49501     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
49503     :cond_41
49504     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
49506     goto :goto_8
49507 .end method
49509 .method final performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
49510     .registers 4
49512     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mRestartingServices:Ljava/util/ArrayList;
49514     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
49516     move-result v0
49518     if-nez v0, :cond_9
49520     :goto_8
49521     return-void
49523     :cond_9
49524     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->intent:Landroid/content/Intent$FilterComparison;
49526     invoke-virtual {v0}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
49528     move-result-object v0
49530     invoke-virtual {v0}, Landroid/content/Intent;->getFlags()I
49532     move-result v0
49534     const/4 v1, 0x1
49536     invoke-direct {p0, p1, v0, v1}, Lcom/android/server/am/ActivityManagerService;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
49538     goto :goto_8
49539 .end method
49541 .method public profileControl(Ljava/lang/String;ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)Z
49542     .registers 21
49543     .annotation system Ldalvik/annotation/Throws;
49544         value = {
49545             Landroid/os/RemoteException;
49546         }
49547     .end annotation
49549     :try_start_0
49550     monitor-enter p0
49551     :try_end_1
49552     .catchall {:try_start_0 .. :try_end_1} :catchall_1d
49553     .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_1} :catch_14
49555     :try_start_1
49556     const-string v4, "android.permission.SET_ACTIVITY_WATCHER"
49558     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
49560     move-result v4
49562     if-eqz v4, :cond_24
49564     new-instance v4, Ljava/lang/SecurityException;
49566     const-string v5, "Requires permission android.permission.SET_ACTIVITY_WATCHER"
49568     invoke-direct {v4, v5}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
49570     throw v4
49572     :catchall_11
49573     move-exception v4
49575     monitor-exit p0
49576     :try_end_13
49577     .catchall {:try_start_1 .. :try_end_13} :catchall_11
49579     :try_start_13
49580     throw v4
49581     :try_end_14
49582     .catchall {:try_start_13 .. :try_end_14} :catchall_1d
49583     .catch Landroid/os/RemoteException; {:try_start_13 .. :try_end_14} :catch_14
49585     :catch_14
49586     move-exception v11
49588     :try_start_15
49589     new-instance v4, Ljava/lang/IllegalStateException;
49591     const-string v5, "Process disappeared"
49593     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
49595     throw v4
49596     :try_end_1d
49597     .catchall {:try_start_15 .. :try_end_1d} :catchall_1d
49599     :catchall_1d
49600     move-exception v4
49602     if-eqz p4, :cond_23
49604     :try_start_20
49605     invoke-virtual/range {p4 .. p4}, Landroid/os/ParcelFileDescriptor;->close()V
49606     :try_end_23
49607     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_23} :catch_d8
49609     :cond_23
49610     :goto_23
49611     throw v4
49613     :cond_24
49614     if-eqz p2, :cond_30
49616     if-nez p4, :cond_30
49618     :try_start_28
49619     new-instance v4, Ljava/lang/IllegalArgumentException;
49621     const-string v5, "null fd"
49623     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
49625     throw v4
49626     :try_end_30
49627     .catchall {:try_start_28 .. :try_end_30} :catchall_11
49629     :cond_30
49630     const/4 v13, 0x0
49632     if-eqz p1, :cond_64
49634     :try_start_33
49635     invoke-static/range {p1 .. p1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
49637     move-result v12
49639     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
49641     monitor-enter v5
49642     :try_end_3a
49643     .catchall {:try_start_33 .. :try_end_3a} :catchall_11
49644     .catch Ljava/lang/NumberFormatException; {:try_start_33 .. :try_end_3a} :catch_8a
49646     :try_start_3a
49647     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
49649     invoke-virtual {v4, v12}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
49651     move-result-object v4
49653     move-object v0, v4
49655     check-cast v0, Lcom/android/server/am/ProcessRecord;
49657     move-object v13, v0
49659     monitor-exit v5
49660     :try_end_45
49661     .catchall {:try_start_3a .. :try_end_45} :catchall_87
49663     :goto_45
49664     if-nez v13, :cond_64
49666     :try_start_47
49667     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
49669     invoke-virtual {v4}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
49671     move-result-object v10
49673     move-object/from16 v0, p1
49675     invoke-virtual {v10, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
49677     move-result-object v14
49679     check-cast v14, Landroid/util/SparseArray;
49681     if-eqz v14, :cond_64
49683     invoke-virtual {v14}, Landroid/util/SparseArray;->size()I
49685     move-result v4
49687     if-lez v4, :cond_64
49689     const/4 v4, 0x0
49691     invoke-virtual {v14, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
49693     move-result-object v13
49695     check-cast v13, Lcom/android/server/am/ProcessRecord;
49697     :cond_64
49698     if-eqz p2, :cond_8c
49700     if-eqz v13, :cond_6c
49702     iget-object v4, v13, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
49704     if-nez v4, :cond_8c
49706     :cond_6c
49707     new-instance v4, Ljava/lang/IllegalArgumentException;
49709     new-instance v5, Ljava/lang/StringBuilder;
49711     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
49713     const-string v6, "Unknown process: "
49715     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49717     move-result-object v5
49719     move-object/from16 v0, p1
49721     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49723     move-result-object v5
49725     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
49727     move-result-object v5
49729     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
49731     throw v4
49732     :try_end_87
49733     .catchall {:try_start_47 .. :try_end_87} :catchall_11
49735     :catchall_87
49736     move-exception v4
49738     :try_start_88
49739     monitor-exit v5
49740     :try_end_89
49741     .catchall {:try_start_88 .. :try_end_89} :catchall_87
49743     :try_start_89
49744     throw v4
49745     :try_end_8a
49746     .catchall {:try_start_89 .. :try_end_8a} :catchall_11
49747     .catch Ljava/lang/NumberFormatException; {:try_start_89 .. :try_end_8a} :catch_8a
49749     :catch_8a
49750     move-exception v4
49752     goto :goto_45
49754     :cond_8c
49755     if-eqz p2, :cond_c9
49757     const/4 v4, 0x0
49759     const/4 v5, 0x0
49761     const/4 v6, 0x0
49763     :try_start_91
49764     invoke-direct {p0, v4, v5, v6}, Lcom/android/server/am/ActivityManagerService;->stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
49766     iget-object v5, v13, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
49768     iget-object v6, v13, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
49770     const/4 v9, 0x0
49772     move-object v4, p0
49774     move-object/from16 v7, p3
49776     move-object/from16 v8, p4
49778     invoke-virtual/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->setProfileApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Z)V
49780     iput-object v13, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
49782     move/from16 v0, p5
49784     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
49785     :try_end_a7
49786     .catchall {:try_start_91 .. :try_end_a7} :catchall_11
49788     :try_start_a7
49789     invoke-virtual/range {p4 .. p4}, Landroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor;
49790     :try_end_aa
49791     .catchall {:try_start_a7 .. :try_end_aa} :catchall_11
49792     .catch Ljava/io/IOException; {:try_start_a7 .. :try_end_aa} :catch_c5
49794     move-result-object p4
49796     :goto_ab
49797     :try_start_ab
49798     iget-object v4, v13, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
49800     move/from16 v0, p2
49802     move-object/from16 v1, p3
49804     move-object/from16 v2, p4
49806     move/from16 v3, p5
49808     invoke-interface {v4, v0, v1, v2, v3}, Landroid/app/IApplicationThread;->profilerControl(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
49810     const/16 p4, 0x0
49812     const/4 v4, 0x0
49814     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
49816     :cond_bd
49817     :goto_bd
49818     const/4 v4, 0x1
49820     monitor-exit p0
49821     :try_end_bf
49822     .catchall {:try_start_ab .. :try_end_bf} :catchall_11
49824     if-eqz p4, :cond_c4
49826     :try_start_c1
49827     invoke-virtual/range {p4 .. p4}, Landroid/os/ParcelFileDescriptor;->close()V
49828     :try_end_c4
49829     .catch Ljava/io/IOException; {:try_start_c1 .. :try_end_c4} :catch_db
49831     :cond_c4
49832     :goto_c4
49833     return v4
49835     :catch_c5
49836     move-exception v11
49838     const/16 p4, 0x0
49840     goto :goto_ab
49842     :cond_c9
49843     :try_start_c9
49844     move-object/from16 v0, p3
49846     move/from16 v1, p5
49848     invoke-direct {p0, v13, v0, v1}, Lcom/android/server/am/ActivityManagerService;->stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
49849     :try_end_d0
49850     .catchall {:try_start_c9 .. :try_end_d0} :catchall_11
49852     if-eqz p4, :cond_bd
49854     :try_start_d2
49855     invoke-virtual/range {p4 .. p4}, Landroid/os/ParcelFileDescriptor;->close()V
49856     :try_end_d5
49857     .catchall {:try_start_d2 .. :try_end_d5} :catchall_11
49858     .catch Ljava/io/IOException; {:try_start_d2 .. :try_end_d5} :catch_d6
49860     goto :goto_bd
49862     :catch_d6
49863     move-exception v4
49865     goto :goto_bd
49867     :catch_d8
49868     move-exception v5
49870     goto/16 :goto_23
49872     :catch_db
49873     move-exception v5
49875     goto :goto_c4
49876 .end method
49878 .method public final publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
49879     .registers 18
49880     .annotation system Ldalvik/annotation/Signature;
49881         value = {
49882             "(",
49883             "Landroid/app/IApplicationThread;",
49884             "Ljava/util/List",
49885             "<",
49886             "Landroid/app/IActivityManager$ContentProviderHolder;",
49887             ">;)V"
49888         }
49889     .end annotation
49891     if-nez p2, :cond_3
49893     :goto_2
49894     return-void
49896     :cond_3
49897     const-string v12, "publishContentProviders"
49899     invoke-virtual {p0, v12}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
49901     monitor-enter p0
49903     :try_start_9
49904     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
49906     move-result-object v10
49908     if-nez v10, :cond_41
49910     new-instance v12, Ljava/lang/SecurityException;
49912     new-instance v13, Ljava/lang/StringBuilder;
49914     invoke-direct {v13}, Ljava/lang/StringBuilder;-><init>()V
49916     const-string v14, "Unable to find app for caller "
49918     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49920     move-result-object v13
49922     move-object/from16 v0, p1
49924     invoke-virtual {v13, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
49926     move-result-object v13
49928     const-string v14, " (pid="
49930     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49932     move-result-object v13
49934     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
49936     move-result v14
49938     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
49940     move-result-object v13
49942     const-string v14, ") when publishing content providers"
49944     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49946     move-result-object v13
49948     invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
49950     move-result-object v13
49952     invoke-direct {v12, v13}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
49954     throw v12
49956     :catchall_3e
49957     move-exception v12
49959     monitor-exit p0
49960     :try_end_40
49961     .catchall {:try_start_9 .. :try_end_40} :catchall_3e
49963     throw v12
49965     :cond_41
49966     :try_start_41
49967     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
49969     move-result-wide v8
49971     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
49973     move-result v1
49975     const/4 v5, 0x0
49977     :goto_4a
49978     if-ge v5, v1, :cond_c8
49980     move-object/from16 v0, p2
49982     invoke-interface {v0, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
49984     move-result-object v11
49986     check-cast v11, Landroid/app/IActivityManager$ContentProviderHolder;
49988     if-eqz v11, :cond_5e
49990     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->info:Landroid/content/pm/ProviderInfo;
49992     if-eqz v12, :cond_5e
49994     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
49996     if-nez v12, :cond_61
49998     :cond_5e
49999     :goto_5e
50000     add-int/lit8 v5, v5, 0x1
50002     goto :goto_4a
50004     :cond_61
50005     iget-object v12, v10, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
50007     iget-object v13, v11, Landroid/app/IActivityManager$ContentProviderHolder;->info:Landroid/content/pm/ProviderInfo;
50009     iget-object v13, v13, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
50011     invoke-virtual {v12, v13}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
50013     move-result-object v4
50015     check-cast v4, Lcom/android/server/am/ContentProviderRecord;
50017     if-eqz v4, :cond_5e
50019     new-instance v3, Landroid/content/ComponentName;
50021     iget-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
50023     iget-object v12, v12, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
50025     iget-object v13, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
50027     iget-object v13, v13, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
50029     invoke-direct {v3, v12, v13}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
50031     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
50033     invoke-virtual {v12, v3, v4}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
50035     iget-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
50037     iget-object v12, v12, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
50039     const-string v13, ";"
50041     invoke-virtual {v12, v13}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
50043     move-result-object v7
50045     const/4 v6, 0x0
50047     :goto_8c
50048     array-length v12, v7
50050     if-ge v6, v12, :cond_99
50052     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
50054     aget-object v13, v7, v6
50056     invoke-virtual {v12, v13, v4}, Lcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
50058     add-int/lit8 v6, v6, 0x1
50060     goto :goto_8c
50062     :cond_99
50063     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
50065     invoke-virtual {v12}, Ljava/util/ArrayList;->size()I
50067     move-result v2
50069     const/4 v6, 0x0
50071     :goto_a0
50072     if-ge v6, v2, :cond_b6
50074     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
50076     invoke-virtual {v12, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
50078     move-result-object v12
50080     if-ne v12, v4, :cond_b3
50082     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
50084     invoke-virtual {v12, v6}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
50086     add-int/lit8 v6, v6, -0x1
50088     add-int/lit8 v2, v2, -0x1
50090     :cond_b3
50091     add-int/lit8 v6, v6, 0x1
50093     goto :goto_a0
50095     :cond_b6
50096     monitor-enter v4
50097     :try_end_b7
50098     .catchall {:try_start_41 .. :try_end_b7} :catchall_3e
50100     :try_start_b7
50101     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
50103     iput-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
50105     iput-object v10, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
50107     invoke-virtual {v4}, Ljava/lang/Object;->notifyAll()V
50109     monitor-exit v4
50110     :try_end_c1
50111     .catchall {:try_start_b7 .. :try_end_c1} :catchall_c5
50113     :try_start_c1
50114     invoke-direct {p0, v10}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
50115     :try_end_c4
50116     .catchall {:try_start_c1 .. :try_end_c4} :catchall_3e
50118     goto :goto_5e
50120     :catchall_c5
50121     move-exception v12
50123     :try_start_c6
50124     monitor-exit v4
50125     :try_end_c7
50126     .catchall {:try_start_c6 .. :try_end_c7} :catchall_c5
50128     :try_start_c7
50129     throw v12
50131     :cond_c8
50132     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
50134     monitor-exit p0
50135     :try_end_cc
50136     .catchall {:try_start_c7 .. :try_end_cc} :catchall_3e
50138     goto/16 :goto_2
50139 .end method
50141 .method public publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
50142     .registers 18
50144     if-eqz p2, :cond_11
50146     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->hasFileDescriptors()Z
50148     move-result v11
50150     const/4 v12, 0x1
50152     if-ne v11, v12, :cond_11
50154     new-instance v11, Ljava/lang/IllegalArgumentException;
50156     const-string v12, "File descriptors passed in Intent"
50158     invoke-direct {v11, v12}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
50160     throw v11
50162     :cond_11
50163     monitor-enter p0
50165     :try_start_12
50166     instance-of v11, p1, Lcom/android/server/am/ServiceRecord;
50168     if-nez v11, :cond_21
50170     new-instance v11, Ljava/lang/IllegalArgumentException;
50172     const-string v12, "Invalid service token"
50174     invoke-direct {v11, v12}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
50176     throw v11
50178     :catchall_1e
50179     move-exception v11
50181     monitor-exit p0
50182     :try_end_20
50183     .catchall {:try_start_12 .. :try_end_20} :catchall_1e
50185     throw v11
50187     :cond_21
50188     :try_start_21
50189     move-object v0, p1
50191     check-cast v0, Lcom/android/server/am/ServiceRecord;
50193     move-object v10, v0
50195     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
50197     move-result-wide v8
50199     if-eqz v10, :cond_dc
50201     new-instance v5, Landroid/content/Intent$FilterComparison;
50203     move-object/from16 v0, p2
50205     invoke-direct {v5, v0}, Landroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
50207     iget-object v11, v10, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
50209     invoke-virtual {v11, v5}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
50211     move-result-object v1
50213     check-cast v1, Lcom/android/server/am/IntentBindRecord;
50215     if-eqz v1, :cond_d0
50217     iget-boolean v11, v1, Lcom/android/server/am/IntentBindRecord;->received:Z
50219     if-nez v11, :cond_d0
50221     move-object/from16 v0, p3
50223     iput-object v0, v1, Lcom/android/server/am/IntentBindRecord;->binder:Landroid/os/IBinder;
50225     const/4 v11, 0x1
50227     iput-boolean v11, v1, Lcom/android/server/am/IntentBindRecord;->requested:Z
50229     const/4 v11, 0x1
50231     iput-boolean v11, v1, Lcom/android/server/am/IntentBindRecord;->received:Z
50233     iget-object v11, v10, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
50235     invoke-virtual {v11}, Ljava/util/HashMap;->size()I
50237     move-result v11
50239     if-lez v11, :cond_d0
50241     iget-object v11, v10, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
50243     invoke-virtual {v11}, Ljava/util/HashMap;->values()Ljava/util/Collection;
50245     move-result-object v11
50247     invoke-interface {v11}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
50249     move-result-object v7
50251     :cond_5c
50252     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
50254     move-result v11
50256     if-eqz v11, :cond_d0
50258     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
50260     move-result-object v3
50262     check-cast v3, Ljava/util/ArrayList;
50264     const/4 v6, 0x0
50266     :goto_69
50267     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
50269     move-result v11
50271     if-ge v6, v11, :cond_5c
50273     invoke-virtual {v3, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
50275     move-result-object v2
50277     check-cast v2, Lcom/android/server/am/ConnectionRecord;
50279     iget-object v11, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
50281     iget-object v11, v11, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
50283     iget-object v11, v11, Lcom/android/server/am/IntentBindRecord;->intent:Landroid/content/Intent$FilterComparison;
50285     invoke-virtual {v5, v11}, Landroid/content/Intent$FilterComparison;->equals(Ljava/lang/Object;)Z
50286     :try_end_7e
50287     .catchall {:try_start_21 .. :try_end_7e} :catchall_1e
50289     move-result v11
50291     if-nez v11, :cond_84
50293     :goto_81
50294     add-int/lit8 v6, v6, 0x1
50296     goto :goto_69
50298     :cond_84
50299     :try_start_84
50300     iget-object v11, v2, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
50302     iget-object v12, v10, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
50304     move-object/from16 v0, p3
50306     invoke-interface {v11, v12, v0}, Landroid/app/IServiceConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
50307     :try_end_8d
50308     .catchall {:try_start_84 .. :try_end_8d} :catchall_1e
50309     .catch Ljava/lang/Exception; {:try_start_84 .. :try_end_8d} :catch_8e
50311     goto :goto_81
50313     :catch_8e
50314     move-exception v4
50316     :try_start_8f
50317     const-string v11, "ActivityManager"
50319     new-instance v12, Ljava/lang/StringBuilder;
50321     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
50323     const-string v13, "Failure sending service "
50325     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50327     move-result-object v12
50329     iget-object v13, v10, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
50331     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50333     move-result-object v12
50335     const-string v13, " to connection "
50337     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50339     move-result-object v12
50341     iget-object v13, v2, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
50343     invoke-interface {v13}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
50345     move-result-object v13
50347     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50349     move-result-object v12
50351     const-string v13, " (in "
50353     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50355     move-result-object v12
50357     iget-object v13, v2, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
50359     iget-object v13, v13, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
50361     iget-object v13, v13, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
50363     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50365     move-result-object v12
50367     const-string v13, ")"
50369     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50371     move-result-object v12
50373     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50375     move-result-object v12
50377     invoke-static {v11, v12, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
50379     goto :goto_81
50381     :cond_d0
50382     iget-object v11, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
50384     invoke-virtual {v11, v10}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
50386     move-result v11
50388     invoke-virtual {p0, v10, v11}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
50390     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
50392     :cond_dc
50393     monitor-exit p0
50394     :try_end_dd
50395     .catchall {:try_start_8f .. :try_end_dd} :catchall_1e
50397     return-void
50398 .end method
50400 .method public refContentProvider(Landroid/os/IBinder;II)Z
50401     .registers 11
50403     :try_start_0
50404     move-object v0, p1
50406     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
50408     move-object v1, v0
50409     :try_end_4
50410     .catch Ljava/lang/ClassCastException; {:try_start_0 .. :try_end_4} :catch_e
50412     if-nez v1, :cond_33
50414     new-instance v4, Ljava/lang/NullPointerException;
50416     const-string v5, "connection is null"
50418     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
50420     throw v4
50422     :catch_e
50423     move-exception v2
50425     new-instance v4, Ljava/lang/StringBuilder;
50427     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
50429     const-string v5, "refContentProvider: "
50431     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50433     move-result-object v4
50435     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50437     move-result-object v4
50439     const-string v5, " not a ContentProviderConnection"
50441     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50443     move-result-object v4
50445     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50447     move-result-object v3
50449     const-string v4, "ActivityManager"
50451     invoke-static {v4, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
50453     new-instance v4, Ljava/lang/IllegalArgumentException;
50455     invoke-direct {v4, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
50457     throw v4
50459     :cond_33
50460     monitor-enter p0
50462     if-lez p2, :cond_3b
50464     :try_start_36
50465     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
50467     add-int/2addr v4, p2
50469     iput v4, v1, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
50471     :cond_3b
50472     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
50474     add-int/2addr p2, v4
50476     if-gez p2, :cond_5c
50478     new-instance v4, Ljava/lang/IllegalStateException;
50480     new-instance v5, Ljava/lang/StringBuilder;
50482     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
50484     const-string v6, "stableCount < 0: "
50486     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50488     move-result-object v5
50490     invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50492     move-result-object v5
50494     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50496     move-result-object v5
50498     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
50500     throw v4
50502     :catchall_59
50503     move-exception v4
50505     monitor-exit p0
50506     :try_end_5b
50507     .catchall {:try_start_36 .. :try_end_5b} :catchall_59
50509     throw v4
50511     :cond_5c
50512     if-lez p3, :cond_63
50514     :try_start_5e
50515     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
50517     add-int/2addr v4, p3
50519     iput v4, v1, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
50521     :cond_63
50522     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
50524     add-int/2addr p3, v4
50526     if-gez p3, :cond_81
50528     new-instance v4, Ljava/lang/IllegalStateException;
50530     new-instance v5, Ljava/lang/StringBuilder;
50532     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
50534     const-string v6, "unstableCount < 0: "
50536     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50538     move-result-object v5
50540     invoke-virtual {v5, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50542     move-result-object v5
50544     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50546     move-result-object v5
50548     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
50550     throw v4
50552     :cond_81
50553     add-int v4, p2, p3
50555     if-gtz v4, :cond_a8
50557     new-instance v4, Ljava/lang/IllegalStateException;
50559     new-instance v5, Ljava/lang/StringBuilder;
50561     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
50563     const-string v6, "ref counts can\'t go to zero here: stable="
50565     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50567     move-result-object v5
50569     invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50571     move-result-object v5
50573     const-string v6, " unstable="
50575     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50577     move-result-object v5
50579     invoke-virtual {v5, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50581     move-result-object v5
50583     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50585     move-result-object v5
50587     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
50589     throw v4
50591     :cond_a8
50592     iput p2, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
50594     iput p3, v1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
50596     iget-boolean v4, v1, Lcom/android/server/am/ContentProviderConnection;->dead:Z
50598     if-nez v4, :cond_b3
50600     const/4 v4, 0x1
50602     :goto_b1
50603     monitor-exit p0
50604     :try_end_b2
50605     .catchall {:try_start_5e .. :try_end_b2} :catchall_59
50607     return v4
50609     :cond_b3
50610     const/4 v4, 0x0
50612     goto :goto_b1
50613 .end method
50615 .method public registerProcessObserver(Landroid/app/IProcessObserver;)V
50616     .registers 4
50618     const-string v0, "android.permission.SET_ACTIVITY_WATCHER"
50620     const-string v1, "registerProcessObserver()"
50622     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
50624     monitor-enter p0
50626     :try_start_8
50627     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
50629     invoke-virtual {v0, p1}, Landroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;)Z
50631     monitor-exit p0
50633     return-void
50635     :catchall_f
50636     move-exception v0
50638     monitor-exit p0
50639     :try_end_11
50640     .catchall {:try_start_8 .. :try_end_11} :catchall_f
50642     throw v0
50643 .end method
50645 .method public registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;)Landroid/content/Intent;
50646     .registers 37
50648     const-string v5, "registerReceiver"
50650     move-object/from16 v0, p0
50652     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
50654     monitor-enter p0
50656     const/4 v6, 0x0
50658     if-eqz p1, :cond_80
50660     :try_start_b
50661     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
50663     move-result-object v6
50665     if-nez v6, :cond_49
50667     new-instance v5, Ljava/lang/SecurityException;
50669     new-instance v10, Ljava/lang/StringBuilder;
50671     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
50673     const-string v11, "Unable to find app for caller "
50675     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50677     move-result-object v10
50679     move-object/from16 v0, p1
50681     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50683     move-result-object v10
50685     const-string v11, " (pid="
50687     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50689     move-result-object v10
50691     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
50693     move-result v11
50695     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50697     move-result-object v10
50699     const-string v11, ") when registering receiver "
50701     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50703     move-result-object v10
50705     move-object/from16 v0, p3
50707     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50709     move-result-object v10
50711     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50713     move-result-object v10
50715     invoke-direct {v5, v10}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50717     throw v5
50719     :catchall_46
50720     move-exception v5
50722     monitor-exit p0
50723     :try_end_48
50724     .catchall {:try_start_b .. :try_end_48} :catchall_46
50726     throw v5
50728     :cond_49
50729     :try_start_49
50730     iget-object v5, v6, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
50732     iget v5, v5, Landroid/content/pm/ApplicationInfo;->uid:I
50734     const/16 v10, 0x3e8
50736     if-eq v5, v10, :cond_82
50738     iget-object v5, v6, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
50740     move-object/from16 v0, p2
50742     invoke-virtual {v5, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
50744     move-result v5
50746     if-nez v5, :cond_82
50748     new-instance v5, Ljava/lang/SecurityException;
50750     new-instance v10, Ljava/lang/StringBuilder;
50752     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
50754     const-string v11, "Given caller package "
50756     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50758     move-result-object v10
50760     move-object/from16 v0, p2
50762     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50764     move-result-object v10
50766     const-string v11, " is not running in process "
50768     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50770     move-result-object v10
50772     invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
50774     move-result-object v10
50776     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50778     move-result-object v10
50780     invoke-direct {v5, v10}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50782     throw v5
50784     :cond_80
50785     const/16 p2, 0x0
50787     :cond_82
50788     const/16 v26, 0x0
50790     invoke-virtual/range {p4 .. p4}, Landroid/content/IntentFilter;->actionsIterator()Ljava/util/Iterator;
50792     move-result-object v25
50794     if-eqz v25, :cond_a3
50796     :goto_8a
50797     invoke-interface/range {v25 .. v25}, Ljava/util/Iterator;->hasNext()Z
50799     move-result v5
50801     if-eqz v5, :cond_ae
50803     invoke-interface/range {v25 .. v25}, Ljava/util/Iterator;->next()Ljava/lang/Object;
50805     move-result-object v24
50807     check-cast v24, Ljava/lang/String;
50809     move-object/from16 v0, p0
50811     move-object/from16 v1, v24
50813     move-object/from16 v2, p4
50815     move-object/from16 v3, v26
50817     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;)Ljava/util/List;
50819     move-result-object v26
50821     goto :goto_8a
50823     :cond_a3
50824     const/4 v5, 0x0
50826     move-object/from16 v0, p0
50828     move-object/from16 v1, p4
50830     move-object/from16 v2, v26
50832     invoke-direct {v0, v5, v1, v2}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;)Ljava/util/List;
50834     move-result-object v26
50836     :cond_ae
50837     if-eqz v26, :cond_bf
50839     const/4 v5, 0x0
50841     move-object/from16 v0, v26
50843     invoke-interface {v0, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
50845     move-result-object v5
50847     check-cast v5, Landroid/content/Intent;
50849     move-object/from16 v30, v5
50851     :goto_bb
50852     if-nez p3, :cond_c2
50854     monitor-exit p0
50856     :goto_be
50857     return-object v30
50859     :cond_bf
50860     const/16 v30, 0x0
50862     goto :goto_bb
50864     :cond_c2
50865     move-object/from16 v0, p0
50867     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
50869     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
50871     move-result-object v10
50873     invoke-virtual {v5, v10}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
50875     move-result-object v4
50877     check-cast v4, Lcom/android/server/am/ReceiverList;
50879     if-nez v4, :cond_f9
50881     new-instance v4, Lcom/android/server/am/ReceiverList;
50883     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
50885     move-result v7
50887     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
50889     move-result v8
50891     move-object/from16 v5, p0
50893     move-object/from16 v9, p3
50895     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILandroid/content/IIntentReceiver;)V
50897     iget-object v5, v4, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
50899     if-eqz v5, :cond_16a
50901     iget-object v5, v4, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
50903     iget-object v5, v5, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
50905     invoke-virtual {v5, v4}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
50907     :goto_ee
50908     move-object/from16 v0, p0
50910     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
50912     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
50914     move-result-object v10
50916     invoke-virtual {v5, v10, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
50918     :cond_f9
50919     new-instance v27, Lcom/android/server/am/BroadcastFilter;
50921     move-object/from16 v0, v27
50923     move-object/from16 v1, p4
50925     move-object/from16 v2, p2
50927     move-object/from16 v3, p5
50929     invoke-direct {v0, v1, v4, v2, v3}, Lcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;)V
50931     move-object/from16 v0, v27
50933     invoke-virtual {v4, v0}, Lcom/android/server/am/ReceiverList;->add(Ljava/lang/Object;)Z
50935     invoke-virtual/range {v27 .. v27}, Lcom/android/server/am/BroadcastFilter;->debugCheck()Z
50937     move-result v5
50939     if-nez v5, :cond_118
50941     const-string v5, "ActivityManager"
50943     const-string v10, "==> For Dynamic broadast"
50945     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
50947     :cond_118
50948     move-object/from16 v0, p0
50950     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
50952     move-object/from16 v0, v27
50954     invoke-virtual {v5, v0}, Lcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V
50956     if-eqz v26, :cond_17b
50958     new-instance v15, Ljava/util/ArrayList;
50960     invoke-direct {v15}, Ljava/util/ArrayList;-><init>()V
50962     move-object/from16 v0, v27
50964     invoke-virtual {v15, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
50966     invoke-interface/range {v26 .. v26}, Ljava/util/List;->size()I
50968     move-result v23
50970     const/16 v29, 0x0
50972     :goto_133
50973     move/from16 v0, v29
50975     move/from16 v1, v23
50977     if-ge v0, v1, :cond_17b
50979     move-object/from16 v0, v26
50981     move/from16 v1, v29
50983     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
50985     move-result-object v9
50987     check-cast v9, Landroid/content/Intent;
50989     move-object/from16 v0, p0
50991     invoke-virtual {v0, v9}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
50993     move-result-object v8
50995     new-instance v7, Lcom/android/server/am/BroadcastRecord;
50997     const/4 v10, 0x0
50999     const/4 v11, 0x0
51001     const/4 v12, -0x1
51003     const/4 v13, -0x1
51005     const/4 v14, 0x0
51007     const/16 v16, 0x0
51009     const/16 v17, 0x0
51011     const/16 v18, 0x0
51013     const/16 v19, 0x0
51015     const/16 v20, 0x0
51017     const/16 v21, 0x1
51019     const/16 v22, 0x1
51021     invoke-direct/range {v7 .. v22}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZ)V
51023     invoke-virtual {v8, v7}, Lcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
51025     invoke-virtual {v8}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
51026     :try_end_167
51027     .catchall {:try_start_49 .. :try_end_167} :catchall_46
51029     add-int/lit8 v29, v29, 0x1
51031     goto :goto_133
51033     :cond_16a
51034     :try_start_16a
51035     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
51037     move-result-object v5
51039     const/4 v10, 0x0
51041     invoke-interface {v5, v4, v10}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
51042     :try_end_172
51043     .catchall {:try_start_16a .. :try_end_172} :catchall_46
51044     .catch Landroid/os/RemoteException; {:try_start_16a .. :try_end_172} :catch_177
51046     const/4 v5, 0x1
51048     :try_start_173
51049     iput-boolean v5, v4, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
51051     goto/16 :goto_ee
51053     :catch_177
51054     move-exception v28
51056     monitor-exit p0
51058     goto/16 :goto_be
51060     :cond_17b
51061     monitor-exit p0
51062     :try_end_17c
51063     .catchall {:try_start_173 .. :try_end_17c} :catchall_46
51065     goto/16 :goto_be
51066 .end method
51068 .method removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V
51069     .registers 13
51071     const/4 v8, 0x0
51073     iget-object v5, p1, Lcom/android/server/am/ConnectionRecord;->conn:Landroid/app/IServiceConnection;
51075     invoke-interface {v5}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
51077     move-result-object v1
51079     iget-object v0, p1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
51081     iget-object v4, v0, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
51083     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
51085     invoke-virtual {v5, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
51087     move-result-object v2
51089     check-cast v2, Ljava/util/ArrayList;
51091     if-eqz v2, :cond_23
51093     invoke-virtual {v2, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
51095     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
51097     move-result v5
51099     if-nez v5, :cond_23
51101     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
51103     invoke-virtual {v5, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
51105     :cond_23
51106     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->connections:Ljava/util/HashSet;
51108     invoke-virtual {v5, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
51110     iget-object v5, p1, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
51112     if-eqz v5, :cond_3d
51114     iget-object v5, p1, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
51116     if-eq v5, p3, :cond_3d
51118     iget-object v5, p1, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
51120     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->connections:Ljava/util/HashSet;
51122     if-eqz v5, :cond_3d
51124     iget-object v5, p1, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
51126     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->connections:Ljava/util/HashSet;
51128     invoke-virtual {v5, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
51130     :cond_3d
51131     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
51133     if-eq v5, p2, :cond_53
51135     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
51137     iget-object v5, v5, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
51139     invoke-virtual {v5, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
51141     iget v5, p1, Lcom/android/server/am/ConnectionRecord;->flags:I
51143     and-int/lit8 v5, v5, 0x8
51145     if-eqz v5, :cond_53
51147     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
51149     invoke-virtual {v5}, Lcom/android/server/am/ProcessRecord;->updateHasAboveClientLocked()V
51151     :cond_53
51152     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
51154     invoke-virtual {v5, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
51156     move-result-object v2
51158     check-cast v2, Ljava/util/ArrayList;
51160     if-eqz v2, :cond_6b
51162     invoke-virtual {v2, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
51164     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
51166     move-result v5
51168     if-nez v5, :cond_6b
51170     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
51172     invoke-virtual {v5, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
51174     :cond_6b
51175     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->connections:Ljava/util/HashSet;
51177     invoke-virtual {v5}, Ljava/util/HashSet;->size()I
51179     move-result v5
51181     if-nez v5, :cond_7c
51183     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51185     iget-object v5, v5, Lcom/android/server/am/IntentBindRecord;->apps:Ljava/util/HashMap;
51187     iget-object v6, v0, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
51189     invoke-virtual {v5, v6}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
51191     :cond_7c
51192     iget-boolean v5, p1, Lcom/android/server/am/ConnectionRecord;->serviceDead:Z
51194     if-nez v5, :cond_c6
51196     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
51198     if-eqz v5, :cond_bd
51200     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
51202     iget-object v5, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
51204     if-eqz v5, :cond_bd
51206     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51208     iget-object v5, v5, Lcom/android/server/am/IntentBindRecord;->apps:Ljava/util/HashMap;
51210     invoke-virtual {v5}, Ljava/util/HashMap;->size()I
51212     move-result v5
51214     if-nez v5, :cond_bd
51216     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51218     iget-boolean v5, v5, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
51220     if-eqz v5, :cond_bd
51222     :try_start_9a
51223     const-string v5, "unbind"
51225     invoke-direct {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
51227     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
51229     invoke-direct {p0, v5}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
51231     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51233     const/4 v6, 0x0
51235     iput-boolean v6, v5, Lcom/android/server/am/IntentBindRecord;->hasBound:Z
51237     iget-object v5, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51239     const/4 v6, 0x0
51241     iput-boolean v6, v5, Lcom/android/server/am/IntentBindRecord;->doRebind:Z
51243     iget-object v5, v4, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
51245     iget-object v5, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
51247     iget-object v6, v0, Lcom/android/server/am/AppBindRecord;->intent:Lcom/android/server/am/IntentBindRecord;
51249     iget-object v6, v6, Lcom/android/server/am/IntentBindRecord;->intent:Landroid/content/Intent$FilterComparison;
51251     invoke-virtual {v6}, Landroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent;
51253     move-result-object v6
51255     invoke-interface {v5, v4, v6}, Landroid/app/IApplicationThread;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V
51256     :try_end_bd
51257     .catch Ljava/lang/Exception; {:try_start_9a .. :try_end_bd} :catch_c7
51259     :cond_bd
51260     :goto_bd
51261     iget v5, p1, Lcom/android/server/am/ConnectionRecord;->flags:I
51263     and-int/lit8 v5, v5, 0x1
51265     if-eqz v5, :cond_c6
51267     invoke-direct {p0, v4, v8}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
51269     :cond_c6
51270     return-void
51272     :catch_c7
51273     move-exception v3
51275     const-string v5, "ActivityManager"
51277     new-instance v6, Ljava/lang/StringBuilder;
51279     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
51281     const-string v7, "Exception when unbinding service "
51283     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51285     move-result-object v6
51287     iget-object v7, v4, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
51289     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51291     move-result-object v6
51293     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51295     move-result-object v6
51297     invoke-static {v5, v6, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
51299     const/4 v5, 0x1
51301     invoke-virtual {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
51303     goto :goto_bd
51304 .end method
51306 .method public removeContentProvider(Landroid/os/IBinder;Z)V
51307     .registers 9
51309     const-string v4, "removeContentProvider"
51311     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51313     monitor-enter p0
51315     :try_start_6
51316     move-object v0, p1
51318     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
51320     move-object v1, v0
51321     :try_end_a
51322     .catchall {:try_start_6 .. :try_end_a} :catchall_14
51323     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_a} :catch_17
51325     if-nez v1, :cond_3c
51327     :try_start_c
51328     new-instance v4, Ljava/lang/NullPointerException;
51330     const-string v5, "connection is null"
51332     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
51334     throw v4
51336     :catchall_14
51337     move-exception v4
51339     monitor-exit p0
51340     :try_end_16
51341     .catchall {:try_start_c .. :try_end_16} :catchall_14
51343     throw v4
51345     :catch_17
51346     move-exception v2
51348     :try_start_18
51349     new-instance v4, Ljava/lang/StringBuilder;
51351     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
51353     const-string v5, "removeContentProvider: "
51355     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51357     move-result-object v4
51359     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
51361     move-result-object v4
51363     const-string v5, " not a ContentProviderConnection"
51365     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51367     move-result-object v4
51369     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51371     move-result-object v3
51373     const-string v4, "ActivityManager"
51375     invoke-static {v4, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
51377     new-instance v4, Ljava/lang/IllegalArgumentException;
51379     invoke-direct {v4, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
51381     throw v4
51383     :cond_3c
51384     const/4 v4, 0x0
51386     const/4 v5, 0x0
51388     invoke-virtual {p0, v1, v4, v5, p2}, Lcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
51390     move-result v4
51392     if-eqz v4, :cond_47
51394     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
51396     :cond_47
51397     monitor-exit p0
51398     :try_end_48
51399     .catchall {:try_start_18 .. :try_end_48} :catchall_14
51401     return-void
51402 .end method
51404 .method public removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V
51405     .registers 5
51407     const-string v0, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"
51409     const-string v1, "Do not have permission in call removeContentProviderExternal()"
51411     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
51413     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;)V
51415     return-void
51416 .end method
51418 .method removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
51419     .registers 6
51421     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
51423     iget-object v3, p1, Lcom/android/server/am/ReceiverList;->receiver:Landroid/content/IIntentReceiver;
51425     invoke-interface {v3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
51427     move-result-object v3
51429     invoke-virtual {v2, v3}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
51431     invoke-virtual {p1}, Lcom/android/server/am/ReceiverList;->size()I
51433     move-result v0
51435     const/4 v1, 0x0
51437     :goto_10
51438     if-ge v1, v0, :cond_20
51440     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
51442     invoke-virtual {p1, v1}, Lcom/android/server/am/ReceiverList;->get(I)Ljava/lang/Object;
51444     move-result-object v2
51446     check-cast v2, Landroid/content/IntentFilter;
51448     invoke-virtual {v3, v2}, Lcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V
51450     add-int/lit8 v1, v1, 0x1
51452     goto :goto_10
51454     :cond_20
51455     return-void
51456 .end method
51458 .method public removeSubTask(II)Z
51459     .registers 8
51461     const/4 v2, 0x1
51463     monitor-enter p0
51465     :try_start_2
51466     const-string v3, "android.permission.REMOVE_TASKS"
51468     const-string v4, "removeSubTask()"
51470     invoke-virtual {p0, v3, v4}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
51472     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
51473     :try_end_c
51474     .catchall {:try_start_2 .. :try_end_c} :catchall_22
51476     move-result-wide v0
51478     :try_start_d
51479     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51481     const/4 v4, 0x1
51483     invoke-virtual {v3, p1, p2, v4}, Lcom/android/server/am/ActivityStack;->removeTaskActivitiesLocked(IIZ)Lcom/android/server/am/ActivityRecord;
51484     :try_end_13
51485     .catchall {:try_start_d .. :try_end_13} :catchall_1d
51487     move-result-object v3
51489     if-eqz v3, :cond_1b
51491     :goto_16
51492     :try_start_16
51493     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51495     monitor-exit p0
51497     return v2
51499     :cond_1b
51500     const/4 v2, 0x0
51502     goto :goto_16
51504     :catchall_1d
51505     move-exception v2
51507     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51509     throw v2
51511     :catchall_22
51512     move-exception v2
51514     monitor-exit p0
51515     :try_end_24
51516     .catchall {:try_start_16 .. :try_end_24} :catchall_22
51518     throw v2
51519 .end method
51521 .method public removeTask(II)Z
51522     .registers 14
51524     const/4 v6, 0x1
51526     const/4 v7, 0x0
51528     monitor-enter p0
51530     :try_start_3
51531     const-string v8, "android.permission.REMOVE_TASKS"
51533     const-string v9, "removeTask()"
51535     invoke-virtual {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
51537     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
51538     :try_end_d
51539     .catchall {:try_start_3 .. :try_end_d} :catchall_53
51541     move-result-wide v1
51543     :try_start_e
51544     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51546     const/4 v9, -0x1
51548     const/4 v10, 0x0
51550     invoke-virtual {v8, p1, v9, v10}, Lcom/android/server/am/ActivityStack;->removeTaskActivitiesLocked(IIZ)Lcom/android/server/am/ActivityRecord;
51552     move-result-object v3
51554     if-eqz v3, :cond_29
51556     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
51558     iget-object v8, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
51560     invoke-virtual {v7, v8}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
51562     iget-object v7, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
51564     invoke-direct {p0, v7, p2}, Lcom/android/server/am/ActivityManagerService;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
51565     :try_end_24
51566     .catchall {:try_start_e .. :try_end_24} :catchall_93
51568     :try_start_24
51569     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51571     monitor-exit p0
51572     :try_end_28
51573     .catchall {:try_start_24 .. :try_end_28} :catchall_53
51575     :goto_28
51576     return v6
51578     :cond_29
51579     const/4 v5, 0x0
51581     const/4 v0, 0x0
51583     :goto_2b
51584     :try_start_2b
51585     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
51587     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
51589     move-result v8
51591     if-ge v0, v8, :cond_40
51593     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
51595     invoke-virtual {v8, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
51597     move-result-object v4
51599     check-cast v4, Lcom/android/server/am/TaskRecord;
51601     iget v8, v4, Lcom/android/server/am/TaskRecord;->taskId:I
51603     if-ne v8, p1, :cond_56
51605     move-object v5, v4
51607     :cond_40
51608     if-eqz v5, :cond_8d
51610     iget v8, v5, Lcom/android/server/am/TaskRecord;->numActivities:I
51612     if-gtz v8, :cond_59
51614     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
51616     invoke-virtual {v7, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
51618     invoke-direct {p0, v5, p2}, Lcom/android/server/am/ActivityManagerService;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
51619     :try_end_4e
51620     .catchall {:try_start_2b .. :try_end_4e} :catchall_93
51622     :try_start_4e
51623     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51625     monitor-exit p0
51627     goto :goto_28
51629     :catchall_53
51630     move-exception v6
51632     monitor-exit p0
51633     :try_end_55
51634     .catchall {:try_start_4e .. :try_end_55} :catchall_53
51636     throw v6
51638     :cond_56
51639     add-int/lit8 v0, v0, 0x1
51641     goto :goto_2b
51643     :cond_59
51644     :try_start_59
51645     const-string v6, "ActivityManager"
51647     new-instance v8, Ljava/lang/StringBuilder;
51649     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
51651     const-string v9, "removeTask: task "
51653     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51655     move-result-object v8
51657     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
51659     move-result-object v8
51661     const-string v9, " does not have activities to remove, "
51663     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51665     move-result-object v8
51667     const-string v9, " but numActivities="
51669     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51671     move-result-object v8
51673     iget v9, v5, Lcom/android/server/am/TaskRecord;->numActivities:I
51675     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
51677     move-result-object v8
51679     const-string v9, ": "
51681     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51683     move-result-object v8
51685     invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
51687     move-result-object v8
51689     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51691     move-result-object v8
51693     invoke-static {v6, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
51694     :try_end_8d
51695     .catchall {:try_start_59 .. :try_end_8d} :catchall_93
51697     :cond_8d
51698     :try_start_8d
51699     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51701     monitor-exit p0
51703     move v6, v7
51705     goto :goto_28
51707     :catchall_93
51708     move-exception v6
51710     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51712     throw v6
51713     :try_end_98
51714     .catchall {:try_start_8d .. :try_end_98} :catchall_53
51715 .end method
51717 .method removeUriPermissionIfNeededLocked(Lcom/android/server/am/UriPermission;)V
51718     .registers 5
51720     iget v1, p1, Lcom/android/server/am/UriPermission;->modeFlags:I
51722     and-int/lit8 v1, v1, 0x3
51724     if-nez v1, :cond_24
51726     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
51728     iget v2, p1, Lcom/android/server/am/UriPermission;->uid:I
51730     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
51732     move-result-object v0
51734     check-cast v0, Ljava/util/HashMap;
51736     if-eqz v0, :cond_24
51738     iget-object v1, p1, Lcom/android/server/am/UriPermission;->uri:Landroid/net/Uri;
51740     invoke-virtual {v0, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
51742     invoke-virtual {v0}, Ljava/util/HashMap;->size()I
51744     move-result v1
51746     if-nez v1, :cond_24
51748     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
51750     iget v2, p1, Lcom/android/server/am/UriPermission;->uid:I
51752     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->remove(I)V
51754     :cond_24
51755     return-void
51756 .end method
51758 .method reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)V
51759     .registers 3
51761     const/4 v0, 0x1
51763     invoke-virtual {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
51765     return-void
51766 .end method
51768 .method public reportThumbnail(Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
51769     .registers 12
51771     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
51773     move-result-wide v6
51775     const/4 v1, 0x0
51777     const/4 v5, 0x1
51779     move-object v0, p0
51781     move-object v2, p1
51783     move-object v3, p2
51785     move-object v4, p3
51787     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
51789     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
51791     return-void
51792 .end method
51794 .method public resumeAppSwitches()V
51795     .registers 3
51797     const-string v0, "android.permission.STOP_APP_SWITCHES"
51799     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
51801     move-result v0
51803     if-eqz v0, :cond_10
51805     new-instance v0, Ljava/lang/SecurityException;
51807     const-string v1, "Requires permission android.permission.STOP_APP_SWITCHES"
51809     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
51811     throw v0
51813     :cond_10
51814     monitor-enter p0
51816     const-wide/16 v0, 0x0
51818     :try_start_13
51819     iput-wide v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
51821     monitor-exit p0
51823     return-void
51825     :catchall_17
51826     move-exception v0
51828     monitor-exit p0
51829     :try_end_19
51830     .catchall {:try_start_13 .. :try_end_19} :catchall_17
51832     throw v0
51833 .end method
51835 .method public revokeUriPermission(Landroid/app/IApplicationThread;Landroid/net/Uri;I)V
51836     .registers 12
51838     const-string v5, "revokeUriPermission"
51840     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51842     monitor-enter p0
51844     :try_start_6
51845     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
51847     move-result-object v4
51849     if-nez v4, :cond_32
51851     new-instance v5, Ljava/lang/SecurityException;
51853     new-instance v6, Ljava/lang/StringBuilder;
51855     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
51857     const-string v7, "Unable to find app for caller "
51859     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51861     move-result-object v6
51863     invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
51865     move-result-object v6
51867     const-string v7, " when revoking permission to uri "
51869     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51871     move-result-object v6
51873     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
51875     move-result-object v6
51877     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51879     move-result-object v6
51881     invoke-direct {v5, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
51883     throw v5
51885     :catchall_2f
51886     move-exception v5
51888     monitor-exit p0
51889     :try_end_31
51890     .catchall {:try_start_6 .. :try_end_31} :catchall_2f
51892     throw v5
51894     :cond_32
51895     if-nez p2, :cond_3d
51897     :try_start_34
51898     const-string v5, "ActivityManager"
51900     const-string v6, "revokeUriPermission: null uri"
51902     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
51904     monitor-exit p0
51906     :goto_3c
51907     return-void
51909     :cond_3d
51910     and-int/lit8 p3, p3, 0x3
51912     if-nez p3, :cond_43
51914     monitor-exit p0
51916     goto :goto_3c
51918     :cond_43
51919     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
51921     move-result-object v3
51923     invoke-virtual {p2}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
51925     move-result-object v0
51927     const/4 v2, 0x0
51929     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
51931     iget v6, v4, Lcom/android/server/am/ProcessRecord;->userId:I
51933     invoke-virtual {v5, v0, v6}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
51935     move-result-object v1
51937     if-eqz v1, :cond_78
51939     iget-object v2, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
51941     :goto_58
51942     if-nez v2, :cond_81
51944     const-string v5, "ActivityManager"
51946     new-instance v6, Ljava/lang/StringBuilder;
51948     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
51950     const-string v7, "No content provider found for permission revoke: "
51952     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51954     move-result-object v6
51956     invoke-virtual {p2}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
51958     move-result-object v7
51960     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51962     move-result-object v6
51964     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51966     move-result-object v6
51968     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
51970     monitor-exit p0
51971     :try_end_77
51972     .catchall {:try_start_34 .. :try_end_77} :catchall_2f
51974     goto :goto_3c
51976     :cond_78
51977     const/16 v5, 0x800
51979     :try_start_7a
51980     iget v6, v4, Lcom/android/server/am/ProcessRecord;->userId:I
51982     invoke-interface {v3, v0, v5, v6}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
51983     :try_end_7f
51984     .catchall {:try_start_7a .. :try_end_7f} :catchall_2f
51985     .catch Landroid/os/RemoteException; {:try_start_7a .. :try_end_7f} :catch_88
51987     move-result-object v2
51989     goto :goto_58
51991     :cond_81
51992     :try_start_81
51993     iget v5, v4, Lcom/android/server/am/ProcessRecord;->uid:I
51995     invoke-direct {p0, v5, p2, p3}, Lcom/android/server/am/ActivityManagerService;->revokeUriPermissionLocked(ILandroid/net/Uri;I)V
51997     monitor-exit p0
51998     :try_end_87
51999     .catchall {:try_start_81 .. :try_end_87} :catchall_2f
52001     goto :goto_3c
52003     :catch_88
52004     move-exception v5
52006     goto :goto_58
52007 .end method
52009 .method public revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;I)V
52010     .registers 8
52012     monitor-enter p0
52014     :try_start_1
52015     invoke-static {p1}, Lcom/android/server/am/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/am/UriPermissionOwner;
52017     move-result-object v0
52019     if-nez v0, :cond_23
52021     new-instance v1, Ljava/lang/IllegalArgumentException;
52023     new-instance v2, Ljava/lang/StringBuilder;
52025     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
52027     const-string v3, "Unknown owner: "
52029     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52031     move-result-object v2
52033     invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52035     move-result-object v2
52037     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52039     move-result-object v2
52041     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
52043     throw v1
52045     :catchall_20
52046     move-exception v1
52048     monitor-exit p0
52049     :try_end_22
52050     .catchall {:try_start_1 .. :try_end_22} :catchall_20
52052     throw v1
52054     :cond_23
52055     if-nez p2, :cond_2a
52057     :try_start_25
52058     invoke-virtual {v0, p3}, Lcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked(I)V
52060     :goto_28
52061     monitor-exit p0
52063     return-void
52065     :cond_2a
52066     invoke-virtual {v0, p2, p3}, Lcom/android/server/am/UriPermissionOwner;->removeUriPermissionLocked(Landroid/net/Uri;I)V
52067     :try_end_2d
52068     .catchall {:try_start_25 .. :try_end_2d} :catchall_20
52070     goto :goto_28
52071 .end method
52073 .method final scheduleAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
52074     .registers 8
52076     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
52078     move-result-wide v0
52080     iget-wide v2, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
52082     const-wide/32 v4, 0xea60
52084     add-long/2addr v2, v4
52086     cmp-long v2, v2, v0
52088     if-lez v2, :cond_f
52090     :cond_e
52091     :goto_e
52092     return-void
52094     :cond_f
52095     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
52097     invoke-virtual {v2, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
52099     move-result v2
52101     if-nez v2, :cond_e
52103     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
52105     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
52107     goto :goto_e
52108 .end method
52110 .method final scheduleAppGcsLocked()V
52111     .registers 13
52113     const-wide/16 v10, 0x1388
52115     const/4 v8, 0x5
52117     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52119     invoke-virtual {v6, v8}, Landroid/os/Handler;->removeMessages(I)V
52121     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
52123     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
52125     move-result v6
52127     if-lez v6, :cond_37
52129     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
52131     const/4 v7, 0x0
52133     invoke-virtual {v6, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
52135     move-result-object v3
52137     check-cast v3, Lcom/android/server/am/ProcessRecord;
52139     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52141     invoke-virtual {v6, v8}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
52143     move-result-object v0
52145     iget-wide v6, v3, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
52147     const-wide/32 v8, 0xea60
52149     add-long v4, v6, v8
52151     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
52153     move-result-wide v1
52155     add-long v6, v1, v10
52157     cmp-long v6, v4, v6
52159     if-gez v6, :cond_32
52161     add-long v4, v1, v10
52163     :cond_32
52164     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52166     invoke-virtual {v6, v0, v4, v5}, Landroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z
52168     :cond_37
52169     return-void
52170 .end method
52172 .method sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
52173     .registers 8
52175     const/4 v1, 0x0
52177     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
52179     array-length v3, v0
52181     const/4 v2, 0x0
52183     :goto_5
52184     if-ge v2, v3, :cond_11
52186     aget-object v4, v0, v2
52188     invoke-virtual {v4, p1}, Lcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
52190     move-result v5
52192     or-int/2addr v1, v5
52194     add-int/lit8 v2, v2, 0x1
52196     goto :goto_5
52198     :cond_11
52199     return v1
52200 .end method
52202 .method final sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
52203     .registers 15
52205     const/4 v6, 0x0
52207     const/4 v4, 0x0
52209     monitor-enter p0
52211     if-nez p1, :cond_f
52213     :try_start_5
52214     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
52216     invoke-virtual {v7, p2}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
52218     move-result-object p1
52220     if-nez p1, :cond_f
52222     monitor-exit p0
52224     :goto_e
52225     return-void
52227     :cond_f
52228     if-nez p3, :cond_1d
52230     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
52232     if-eqz v7, :cond_1d
52234     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
52236     iget-object p3, v7, Lcom/android/server/am/ThumbnailHolder;->lastThumbnail:Landroid/graphics/Bitmap;
52238     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
52240     iget-object p4, v7, Lcom/android/server/am/ThumbnailHolder;->lastDescription:Ljava/lang/CharSequence;
52242     :cond_1d
52243     if-nez p3, :cond_26
52245     if-nez p5, :cond_26
52247     monitor-exit p0
52249     goto :goto_e
52251     :catchall_23
52252     move-exception v7
52254     :goto_24
52255     monitor-exit p0
52256     :try_end_25
52257     .catchall {:try_start_5 .. :try_end_25} :catchall_23
52259     throw v7
52261     :cond_26
52262     :try_start_26
52263     iget-object v6, p1, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
52265     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
52267     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
52268     :try_end_2d
52269     .catchall {:try_start_26 .. :try_end_2d} :catchall_23
52271     move-result v0
52273     const/4 v2, 0x0
52275     move-object v5, v4
52277     :goto_30
52278     if-ge v2, v0, :cond_65
52280     :try_start_32
52281     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
52283     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
52285     move-result-object v3
52287     check-cast v3, Lcom/android/server/am/PendingThumbnailsRecord;
52289     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
52291     invoke-virtual {v7, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
52293     move-result v7
52295     if-eqz v7, :cond_60
52297     if-nez v5, :cond_9b
52299     new-instance v4, Ljava/util/ArrayList;
52301     invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
52302     :try_end_49
52303     .catchall {:try_start_32 .. :try_end_49} :catchall_98
52305     :goto_49
52306     :try_start_49
52307     invoke-virtual {v4, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
52309     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
52311     invoke-virtual {v7}, Ljava/util/HashSet;->size()I
52313     move-result v7
52315     if-nez v7, :cond_61
52317     const/4 v7, 0x1
52319     iput-boolean v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->finished:Z
52321     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
52323     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
52324     :try_end_5c
52325     .catchall {:try_start_49 .. :try_end_5c} :catchall_23
52327     add-int/lit8 v0, v0, -0x1
52329     move-object v5, v4
52331     goto :goto_30
52333     :cond_60
52334     move-object v4, v5
52336     :cond_61
52337     add-int/lit8 v2, v2, 0x1
52339     move-object v5, v4
52341     goto :goto_30
52343     :cond_65
52344     :try_start_65
52345     monitor-exit p0
52346     :try_end_66
52347     .catchall {:try_start_65 .. :try_end_66} :catchall_98
52349     if-eqz v5, :cond_95
52351     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
52353     move-result v0
52355     const/4 v2, 0x0
52357     :goto_6d
52358     if-ge v2, v0, :cond_95
52360     :try_start_6f
52361     invoke-virtual {v5, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
52363     move-result-object v3
52365     check-cast v3, Lcom/android/server/am/PendingThumbnailsRecord;
52367     iget-object v8, v3, Lcom/android/server/am/PendingThumbnailsRecord;->receiver:Landroid/app/IThumbnailReceiver;
52369     if-eqz v6, :cond_8a
52371     iget v7, v6, Lcom/android/server/am/TaskRecord;->taskId:I
52373     :goto_7b
52374     invoke-interface {v8, v7, p3, p4}, Landroid/app/IThumbnailReceiver;->newThumbnail(ILandroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
52376     iget-boolean v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->finished:Z
52378     if-eqz v7, :cond_87
52380     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->receiver:Landroid/app/IThumbnailReceiver;
52382     invoke-interface {v7}, Landroid/app/IThumbnailReceiver;->finished()V
52383     :try_end_87
52384     .catch Ljava/lang/Exception; {:try_start_6f .. :try_end_87} :catch_8c
52386     :cond_87
52387     :goto_87
52388     add-int/lit8 v2, v2, 0x1
52390     goto :goto_6d
52392     :cond_8a
52393     const/4 v7, -0x1
52395     goto :goto_7b
52397     :catch_8c
52398     move-exception v1
52400     const-string v7, "ActivityManager"
52402     const-string v8, "Exception thrown when sending thumbnail"
52404     invoke-static {v7, v8, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
52406     goto :goto_87
52408     :cond_95
52409     move-object v4, v5
52411     goto/16 :goto_e
52413     :catchall_98
52414     move-exception v7
52416     move-object v4, v5
52418     goto :goto_24
52420     :cond_9b
52421     move-object v4, v5
52423     goto :goto_49
52424 .end method
52426 .method public serviceDoneExecuting(Landroid/os/IBinder;III)V
52427     .registers 14
52429     const/4 v7, 0x1
52431     monitor-enter p0
52433     :try_start_2
52434     instance-of v6, p1, Lcom/android/server/am/ServiceRecord;
52436     if-nez v6, :cond_11
52438     new-instance v6, Ljava/lang/IllegalArgumentException;
52440     const-string v7, "Invalid service token"
52442     invoke-direct {v6, v7}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
52444     throw v6
52446     :catchall_e
52447     move-exception v6
52449     monitor-exit p0
52450     :try_end_10
52451     .catchall {:try_start_2 .. :try_end_10} :catchall_e
52453     throw v6
52455     :cond_11
52456     :try_start_11
52457     move-object v0, p1
52459     check-cast v0, Lcom/android/server/am/ServiceRecord;
52461     move-object v4, v0
52463     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
52465     invoke-virtual {v6, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
52467     move-result v1
52469     if-eqz v4, :cond_af
52471     if-eq v4, p1, :cond_4f
52473     const-string v6, "ActivityManager"
52475     new-instance v7, Ljava/lang/StringBuilder;
52477     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
52479     const-string v8, "Done executing service "
52481     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52483     move-result-object v7
52485     iget-object v8, v4, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
52487     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52489     move-result-object v7
52491     const-string v8, " with incorrect token: given "
52493     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52495     move-result-object v7
52497     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52499     move-result-object v7
52501     const-string v8, ", expected "
52503     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52505     move-result-object v7
52507     invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52509     move-result-object v7
52511     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52513     move-result-object v7
52515     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
52517     monitor-exit p0
52519     :goto_4e
52520     return-void
52522     :cond_4f
52523     if-ne p2, v7, :cond_7c
52525     const/4 v6, 0x1
52527     iput-boolean v6, v4, Lcom/android/server/am/ServiceRecord;->callStart:Z
52529     sparse-switch p4, :sswitch_data_cc
52531     new-instance v6, Ljava/lang/IllegalArgumentException;
52533     new-instance v7, Ljava/lang/StringBuilder;
52535     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
52537     const-string v8, "Unknown service start result: "
52539     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52541     move-result-object v7
52543     invoke-virtual {v7, p4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
52545     move-result-object v7
52547     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52549     move-result-object v7
52551     invoke-direct {v6, v7}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
52553     throw v6
52555     :sswitch_70
52556     const/4 v6, 0x1
52558     invoke-virtual {v4, p3, v6}, Lcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
52560     const/4 v6, 0x0
52562     iput-boolean v6, v4, Lcom/android/server/am/ServiceRecord;->stopIfKilled:Z
52564     :cond_77
52565     :goto_77
52566     if-nez p4, :cond_7c
52568     const/4 v6, 0x0
52570     iput-boolean v6, v4, Lcom/android/server/am/ServiceRecord;->callStart:Z
52572     :cond_7c
52573     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
52575     move-result-wide v2
52577     invoke-virtual {p0, v4, v1}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
52579     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
52581     :goto_86
52582     monitor-exit p0
52584     goto :goto_4e
52586     :sswitch_88
52587     const/4 v6, 0x1
52589     invoke-virtual {v4, p3, v6}, Lcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
52591     invoke-virtual {v4}, Lcom/android/server/am/ServiceRecord;->getLastStartId()I
52593     move-result v6
52595     if-ne v6, p3, :cond_77
52597     const/4 v6, 0x1
52599     iput-boolean v6, v4, Lcom/android/server/am/ServiceRecord;->stopIfKilled:Z
52601     goto :goto_77
52603     :sswitch_96
52604     const/4 v6, 0x0
52606     invoke-virtual {v4, p3, v6}, Lcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
52608     move-result-object v5
52610     if-eqz v5, :cond_77
52612     const/4 v6, 0x0
52614     iput v6, v5, Lcom/android/server/am/ServiceRecord$StartItem;->deliveryCount:I
52616     iget v6, v5, Lcom/android/server/am/ServiceRecord$StartItem;->doneExecutingCount:I
52618     add-int/lit8 v6, v6, 0x1
52620     iput v6, v5, Lcom/android/server/am/ServiceRecord$StartItem;->doneExecutingCount:I
52622     const/4 v6, 0x1
52624     iput-boolean v6, v4, Lcom/android/server/am/ServiceRecord;->stopIfKilled:Z
52626     goto :goto_77
52628     :sswitch_aa
52629     const/4 v6, 0x1
52631     invoke-virtual {v4, p3, v6}, Lcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
52633     goto :goto_77
52635     :cond_af
52636     const-string v6, "ActivityManager"
52638     new-instance v7, Ljava/lang/StringBuilder;
52640     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
52642     const-string v8, "Done executing unknown service from pid "
52644     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52646     move-result-object v7
52648     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
52650     move-result v8
52652     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
52654     move-result-object v7
52656     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52658     move-result-object v7
52660     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
52661     :try_end_cb
52662     .catchall {:try_start_11 .. :try_end_cb} :catchall_e
52664     goto :goto_86
52666     :sswitch_data_cc
52667     .sparse-switch
52668         0x0 -> :sswitch_70
52669         0x1 -> :sswitch_70
52670         0x2 -> :sswitch_88
52671         0x3 -> :sswitch_96
52672         0x3e8 -> :sswitch_aa
52673     .end sparse-switch
52674 .end method
52676 .method public serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
52677     .registers 6
52679     iget v0, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
52681     add-int/lit8 v0, v0, -0x1
52683     iput v0, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
52685     iget v0, p1, Lcom/android/server/am/ServiceRecord;->executeNesting:I
52687     if-gtz v0, :cond_39
52689     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
52691     if-eqz v0, :cond_39
52693     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
52695     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
52697     invoke-virtual {v0, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
52699     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
52701     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
52703     invoke-virtual {v0}, Ljava/util/HashSet;->size()I
52705     move-result v0
52707     if-nez v0, :cond_28
52709     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52711     const/16 v1, 0xc
52713     iget-object v2, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
52715     invoke-virtual {v0, v1, v2}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
52717     :cond_28
52718     if-eqz p2, :cond_34
52720     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
52722     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
52724     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
52726     invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
52728     :cond_34
52729     iget-object v0, p1, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
52731     invoke-direct {p0, v0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
52733     :cond_39
52734     return-void
52735 .end method
52737 .method serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
52738     .registers 15
52740     const/4 v0, 0x0
52742     monitor-enter p0
52744     :try_start_2
52745     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
52747     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
52749     move-result v9
52751     if-eqz v9, :cond_e
52753     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
52755     if-nez v9, :cond_10
52757     :cond_e
52758     monitor-exit p0
52760     :cond_f
52761     :goto_f
52762     return-void
52764     :cond_10
52765     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
52767     move-result-wide v9
52769     const-wide/16 v11, 0x4e20
52771     sub-long v2, v9, v11
52773     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
52775     invoke-virtual {v9}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
52777     move-result-object v1
52779     const/4 v8, 0x0
52781     const-wide/16 v5, 0x0
52783     :cond_21
52784     :goto_21
52785     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
52787     move-result v9
52789     if-eqz v9, :cond_34
52791     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
52793     move-result-object v7
52795     check-cast v7, Lcom/android/server/am/ServiceRecord;
52797     iget-wide v9, v7, Lcom/android/server/am/ServiceRecord;->executingStart:J
52799     cmp-long v9, v9, v2
52801     if-gez v9, :cond_74
52803     move-object v8, v7
52805     :cond_34
52806     if-eqz v8, :cond_7d
52808     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
52810     invoke-virtual {v9, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
52812     move-result v9
52814     if-eqz v9, :cond_7d
52816     const-string v9, "ActivityManager"
52818     new-instance v10, Ljava/lang/StringBuilder;
52820     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
52822     const-string v11, "Timeout executing service: "
52824     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52826     move-result-object v10
52828     invoke-virtual {v10, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52830     move-result-object v10
52832     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52834     move-result-object v10
52836     invoke-static {v9, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
52838     new-instance v9, Ljava/lang/StringBuilder;
52840     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
52842     const-string v10, "Executing service "
52844     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52846     move-result-object v9
52848     iget-object v10, v8, Lcom/android/server/am/ServiceRecord;->shortName:Ljava/lang/String;
52850     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52852     move-result-object v9
52854     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52856     move-result-object v0
52858     :goto_6b
52859     monitor-exit p0
52860     :try_end_6c
52861     .catchall {:try_start_2 .. :try_end_6c} :catchall_90
52863     if-eqz v0, :cond_f
52865     const/4 v9, 0x0
52867     const/4 v10, 0x0
52869     invoke-virtual {p0, p1, v9, v10, v0}, Lcom/android/server/am/ActivityManagerService;->appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
52871     goto :goto_f
52873     :cond_74
52874     :try_start_74
52875     iget-wide v9, v7, Lcom/android/server/am/ServiceRecord;->executingStart:J
52877     cmp-long v9, v9, v5
52879     if-lez v9, :cond_21
52881     iget-wide v5, v7, Lcom/android/server/am/ServiceRecord;->executingStart:J
52883     goto :goto_21
52885     :cond_7d
52886     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52888     const/16 v10, 0xc
52890     invoke-virtual {v9, v10}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
52892     move-result-object v4
52894     iput-object p1, v4, Landroid/os/Message;->obj:Ljava/lang/Object;
52896     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
52898     const-wide/16 v10, 0x4e20
52900     add-long/2addr v10, v5
52902     invoke-virtual {v9, v4, v10, v11}, Landroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z
52904     goto :goto_6b
52906     :catchall_90
52907     move-exception v9
52909     monitor-exit p0
52910     :try_end_92
52911     .catchall {:try_start_74 .. :try_end_92} :catchall_90
52913     throw v9
52914 .end method
52916 .method public setActivityController(Landroid/app/IActivityController;)V
52917     .registers 4
52919     const-string v0, "android.permission.SET_ACTIVITY_WATCHER"
52921     const-string v1, "setActivityController()"
52923     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
52925     monitor-enter p0
52927     :try_start_8
52928     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
52930     monitor-exit p0
52932     return-void
52934     :catchall_c
52935     move-exception v0
52937     monitor-exit p0
52938     :try_end_e
52939     .catchall {:try_start_8 .. :try_end_e} :catchall_c
52941     throw v0
52942 .end method
52944 .method public setAlwaysFinish(Z)V
52945     .registers 5
52947     const-string v0, "android.permission.SET_ALWAYS_FINISH"
52949     const-string v1, "setAlwaysFinish()"
52951     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
52953     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
52955     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
52957     move-result-object v1
52959     const-string v2, "always_finish_activities"
52961     if-eqz p1, :cond_1a
52963     const/4 v0, 0x1
52965     :goto_12
52966     invoke-static {v1, v2, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
52968     monitor-enter p0
52970     :try_start_16
52971     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
52973     monitor-exit p0
52975     return-void
52977     :cond_1a
52978     const/4 v0, 0x0
52980     goto :goto_12
52982     :catchall_1c
52983     move-exception v0
52985     monitor-exit p0
52986     :try_end_1e
52987     .catchall {:try_start_16 .. :try_end_1e} :catchall_1c
52989     throw v0
52990 .end method
52992 .method public setDebugApp(Ljava/lang/String;ZZ)V
52993     .registers 15
52995     const/4 v1, 0x1
52997     const/4 v2, 0x0
52999     const-string v0, "android.permission.SET_DEBUG_APP"
53001     const-string v3, "setDebugApp()"
53003     invoke-virtual {p0, v0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53005     if-eqz p3, :cond_1e
53007     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
53009     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
53011     move-result-object v10
53013     const-string v0, "debug_app"
53015     invoke-static {v10, v0, p1}, Landroid/provider/Settings$System;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z
53017     const-string v3, "wait_for_debugger"
53019     if-eqz p2, :cond_47
53021     move v0, v1
53023     :goto_1b
53024     invoke-static {v10, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
53026     :cond_1e
53027     monitor-enter p0
53029     if-nez p3, :cond_29
53031     :try_start_21
53032     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
53034     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
53036     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
53038     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
53040     :cond_29
53041     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
53043     iput-boolean p2, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
53045     if-nez p3, :cond_49
53047     :goto_2f
53048     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
53050     if-eqz p1, :cond_45
53052     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
53054     move-result-wide v8
53056     const/4 v2, -0x1
53058     const/4 v3, 0x0
53060     const/4 v4, 0x0
53062     const/4 v5, 0x1
53064     const/4 v6, 0x1
53066     const/4 v7, 0x0
53068     move-object v0, p0
53070     move-object v1, p1
53072     invoke-direct/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
53074     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53076     :cond_45
53077     monitor-exit p0
53079     return-void
53081     :cond_47
53082     move v0, v2
53084     goto :goto_1b
53086     :cond_49
53087     move v1, v2
53089     goto :goto_2f
53091     :catchall_4b
53092     move-exception v0
53094     monitor-exit p0
53095     :try_end_4d
53096     .catchall {:try_start_21 .. :try_end_4d} :catchall_4b
53098     throw v0
53099 .end method
53101 .method final setFocusedActivityLocked(Lcom/android/server/am/ActivityRecord;)V
53102     .registers 5
53104     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
53106     if-eq v0, p1, :cond_10
53108     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
53110     if-eqz p1, :cond_10
53112     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53114     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
53116     const/4 v2, 0x1
53118     invoke-virtual {v0, v1, v2}, Lcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V
53120     :cond_10
53121     return-void
53122 .end method
53124 .method public setFrontActivityScreenCompatMode(I)V
53125     .registers 4
53127     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
53129     const-string v1, "setFrontActivityScreenCompatMode"
53131     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53133     monitor-enter p0
53135     :try_start_8
53136     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
53138     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->setFrontActivityScreenCompatModeLocked(I)V
53140     monitor-exit p0
53142     return-void
53144     :catchall_f
53145     move-exception v0
53147     monitor-exit p0
53148     :try_end_11
53149     .catchall {:try_start_8 .. :try_end_11} :catchall_f
53151     throw v0
53152 .end method
53154 .method public setImmersive(Landroid/os/IBinder;Z)V
53155     .registers 5
53157     monitor-enter p0
53159     :try_start_1
53160     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
53162     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
53164     move-result-object v0
53166     if-nez v0, :cond_12
53168     new-instance v1, Ljava/lang/IllegalArgumentException;
53170     invoke-direct {v1}, Ljava/lang/IllegalArgumentException;-><init>()V
53172     throw v1
53174     :catchall_f
53175     move-exception v1
53177     monitor-exit p0
53178     :try_end_11
53179     .catchall {:try_start_1 .. :try_end_11} :catchall_f
53181     throw v1
53183     :cond_12
53184     :try_start_12
53185     iput-boolean p2, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
53187     monitor-exit p0
53188     :try_end_15
53189     .catchall {:try_start_12 .. :try_end_15} :catchall_f
53191     return-void
53192 .end method
53194 .method public setLockScreenShown(Z)V
53195     .registers 4
53197     const-string v0, "android.permission.DEVICE_POWER"
53199     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
53201     move-result v0
53203     if-eqz v0, :cond_10
53205     new-instance v0, Ljava/lang/SecurityException;
53207     const-string v1, "Requires permission android.permission.DEVICE_POWER"
53209     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53211     throw v0
53213     :cond_10
53214     monitor-enter p0
53216     :try_start_11
53217     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
53219     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
53221     monitor-exit p0
53223     return-void
53225     :catchall_18
53226     move-exception v0
53228     monitor-exit p0
53229     :try_end_1a
53230     .catchall {:try_start_11 .. :try_end_1a} :catchall_18
53232     throw v0
53233 .end method
53235 .method setOpenGlTraceApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)V
53236     .registers 7
53238     monitor-enter p0
53240     :try_start_1
53241     const-string v1, "1"
53243     const-string v2, "ro.debuggable"
53245     const-string v3, "0"
53247     invoke-static {v2, v3}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
53249     move-result-object v2
53251     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
53253     move-result v0
53255     if-nez v0, :cond_35
53257     iget v1, p1, Landroid/content/pm/ApplicationInfo;->flags:I
53259     and-int/lit8 v1, v1, 0x2
53261     if-nez v1, :cond_35
53263     new-instance v1, Ljava/lang/SecurityException;
53265     new-instance v2, Ljava/lang/StringBuilder;
53267     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
53269     const-string v3, "Process not debuggable: "
53271     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53273     move-result-object v2
53275     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
53277     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53279     move-result-object v2
53281     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53283     move-result-object v2
53285     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53287     throw v1
53289     :catchall_32
53290     move-exception v1
53292     monitor-exit p0
53293     :try_end_34
53294     .catchall {:try_start_1 .. :try_end_34} :catchall_32
53296     throw v1
53298     :cond_35
53299     :try_start_35
53300     iput-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
53302     monitor-exit p0
53303     :try_end_38
53304     .catchall {:try_start_35 .. :try_end_38} :catchall_32
53306     return-void
53307 .end method
53309 .method public setPackageAskScreenCompat(Ljava/lang/String;Z)V
53310     .registers 5
53312     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
53314     const-string v1, "setPackageAskScreenCompat"
53316     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53318     monitor-enter p0
53320     :try_start_8
53321     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
53323     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/CompatModePackages;->setPackageAskCompatModeLocked(Ljava/lang/String;Z)V
53325     monitor-exit p0
53327     return-void
53329     :catchall_f
53330     move-exception v0
53332     monitor-exit p0
53333     :try_end_11
53334     .catchall {:try_start_8 .. :try_end_11} :catchall_f
53336     throw v0
53337 .end method
53339 .method public setPackageScreenCompatMode(Ljava/lang/String;I)V
53340     .registers 5
53342     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
53344     const-string v1, "setPackageScreenCompatMode"
53346     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53348     monitor-enter p0
53350     :try_start_8
53351     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
53353     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/CompatModePackages;->setPackageScreenCompatModeLocked(Ljava/lang/String;I)V
53355     monitor-exit p0
53357     return-void
53359     :catchall_f
53360     move-exception v0
53362     monitor-exit p0
53363     :try_end_11
53364     .catchall {:try_start_8 .. :try_end_11} :catchall_f
53366     throw v0
53367 .end method
53369 .method public setProcessForeground(Landroid/os/IBinder;IZ)V
53370     .registers 12
53372     const-string v4, "android.permission.SET_PROCESS_LIMIT"
53374     const-string v5, "setProcessForeground()"
53376     invoke-virtual {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53378     monitor-enter p0
53380     const/4 v0, 0x0
53382     :try_start_9
53383     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
53385     monitor-enter v5
53386     :try_end_c
53387     .catchall {:try_start_9 .. :try_end_c} :catchall_6f
53389     :try_start_c
53390     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
53392     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
53394     move-result-object v3
53396     check-cast v3, Lcom/android/server/am/ProcessRecord;
53398     if-nez v3, :cond_33
53400     if-eqz p3, :cond_33
53402     const-string v4, "ActivityManager"
53404     new-instance v6, Ljava/lang/StringBuilder;
53406     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
53408     const-string v7, "setProcessForeground called on unknown pid: "
53410     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53412     move-result-object v6
53414     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53416     move-result-object v6
53418     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53420     move-result-object v6
53422     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
53424     monitor-exit v5
53425     :try_end_31
53426     .catchall {:try_start_c .. :try_end_31} :catchall_72
53428     :try_start_31
53429     monitor-exit p0
53430     :try_end_32
53431     .catchall {:try_start_31 .. :try_end_32} :catchall_6f
53433     :goto_32
53434     return-void
53436     :cond_33
53437     :try_start_33
53438     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
53440     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
53442     move-result-object v2
53444     check-cast v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
53446     if-eqz v2, :cond_4e
53448     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->token:Landroid/os/IBinder;
53450     const/4 v6, 0x0
53452     invoke-interface {v4, v2, v6}, Landroid/os/IBinder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
53454     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
53456     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->remove(I)V
53458     if-eqz v3, :cond_4d
53460     const/4 v4, 0x0
53462     iput-object v4, v3, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
53464     :cond_4d
53465     const/4 v0, 0x1
53467     :cond_4e
53468     if-eqz p3, :cond_67
53470     if-eqz p1, :cond_67
53472     new-instance v1, Lcom/android/server/am/ActivityManagerService$9;
53474     invoke-direct {v1, p0}, Lcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;)V
53476     iput p2, v1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
53478     iput-object p1, v1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->token:Landroid/os/IBinder;
53479     :try_end_5b
53480     .catchall {:try_start_33 .. :try_end_5b} :catchall_72
53482     const/4 v4, 0x0
53484     :try_start_5c
53485     invoke-interface {p1, v1, v4}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
53487     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
53489     invoke-virtual {v4, p2, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
53491     iput-object p1, v3, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
53492     :try_end_66
53493     .catchall {:try_start_5c .. :try_end_66} :catchall_72
53494     .catch Landroid/os/RemoteException; {:try_start_5c .. :try_end_66} :catch_75
53496     const/4 v0, 0x1
53498     :cond_67
53499     :goto_67
53500     :try_start_67
53501     monitor-exit v5
53502     :try_end_68
53503     .catchall {:try_start_67 .. :try_end_68} :catchall_72
53505     if-eqz v0, :cond_6d
53507     :try_start_6a
53508     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
53510     :cond_6d
53511     monitor-exit p0
53513     goto :goto_32
53515     :catchall_6f
53516     move-exception v4
53518     monitor-exit p0
53519     :try_end_71
53520     .catchall {:try_start_6a .. :try_end_71} :catchall_6f
53522     throw v4
53524     :catchall_72
53525     move-exception v4
53527     :try_start_73
53528     monitor-exit v5
53529     :try_end_74
53530     .catchall {:try_start_73 .. :try_end_74} :catchall_72
53532     :try_start_74
53533     throw v4
53534     :try_end_75
53535     .catchall {:try_start_74 .. :try_end_75} :catchall_6f
53537     :catch_75
53538     move-exception v4
53540     goto :goto_67
53541 .end method
53543 .method public setProcessLimit(I)V
53544     .registers 4
53546     const-string v0, "android.permission.SET_PROCESS_LIMIT"
53548     const-string v1, "setProcessLimit()"
53550     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
53552     monitor-enter p0
53554     if-gez p1, :cond_15
53556     const/16 v0, 0xf
53558     :goto_c
53559     :try_start_c
53560     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
53562     iput p1, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
53564     monitor-exit p0
53565     :try_end_11
53566     .catchall {:try_start_c .. :try_end_11} :catchall_17
53568     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
53570     return-void
53572     :cond_15
53573     move v0, p1
53575     goto :goto_c
53577     :catchall_17
53578     move-exception v0
53580     :try_start_18
53581     monitor-exit p0
53582     :try_end_19
53583     .catchall {:try_start_18 .. :try_end_19} :catchall_17
53585     throw v0
53586 .end method
53588 .method setProfileApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Z)V
53589     .registers 10
53591     monitor-enter p0
53593     :try_start_1
53594     const-string v1, "1"
53596     const-string v2, "ro.debuggable"
53598     const-string v3, "0"
53600     invoke-static {v2, v3}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
53602     move-result-object v2
53604     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
53606     move-result v0
53608     if-nez v0, :cond_35
53610     iget v1, p1, Landroid/content/pm/ApplicationInfo;->flags:I
53612     and-int/lit8 v1, v1, 0x2
53614     if-nez v1, :cond_35
53616     new-instance v1, Ljava/lang/SecurityException;
53618     new-instance v2, Ljava/lang/StringBuilder;
53620     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
53622     const-string v3, "Process not debuggable: "
53624     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53626     move-result-object v2
53628     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
53630     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53632     move-result-object v2
53634     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53636     move-result-object v2
53638     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53640     throw v1
53642     :catchall_32
53643     move-exception v1
53645     monitor-exit p0
53646     :try_end_34
53647     .catchall {:try_start_1 .. :try_end_34} :catchall_32
53649     throw v1
53651     :cond_35
53652     :try_start_35
53653     iput-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
53655     iput-object p3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
53657     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
53658     :try_end_3b
53659     .catchall {:try_start_35 .. :try_end_3b} :catchall_32
53661     if-eqz v1, :cond_45
53663     :try_start_3d
53664     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
53666     invoke-virtual {v1}, Landroid/os/ParcelFileDescriptor;->close()V
53667     :try_end_42
53668     .catchall {:try_start_3d .. :try_end_42} :catchall_32
53669     .catch Ljava/io/IOException; {:try_start_3d .. :try_end_42} :catch_4e
53671     :goto_42
53672     const/4 v1, 0x0
53674     :try_start_43
53675     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
53677     :cond_45
53678     iput-object p4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
53680     const/4 v1, 0x0
53682     iput v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
53684     iput-boolean p5, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
53686     monitor-exit p0
53687     :try_end_4d
53688     .catchall {:try_start_43 .. :try_end_4d} :catchall_32
53690     return-void
53692     :catch_4e
53693     move-exception v1
53695     goto :goto_42
53696 .end method
53698 .method public setRequestedOrientation(Landroid/os/IBinder;I)V
53699     .registers 11
53701     const/4 v4, 0x0
53703     monitor-enter p0
53705     :try_start_2
53706     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
53708     invoke-virtual {v5, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
53710     move-result-object v3
53712     if-nez v3, :cond_c
53714     monitor-exit p0
53716     :goto_b
53717     return-void
53719     :cond_c
53720     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
53722     move-result-wide v1
53724     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53726     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
53728     invoke-virtual {v5, v6, p2}, Lcom/android/server/wm/WindowManagerService;->setAppOrientation(Landroid/view/IApplicationToken;I)V
53730     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53732     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
53734     iget-object v7, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
53736     invoke-virtual {v3, v7}, Lcom/android/server/am/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/am/ProcessRecord;)Z
53738     move-result v7
53740     if-eqz v7, :cond_25
53742     iget-object v4, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
53744     :cond_25
53745     invoke-virtual {v5, v6, v4}, Lcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;)Landroid/content/res/Configuration;
53747     move-result-object v0
53749     if-eqz v0, :cond_3c
53751     const/4 v4, 0x1
53753     iput-boolean v4, v3, Lcom/android/server/am/ActivityRecord;->frozenBeforeDestroy:Z
53755     const/4 v4, 0x0
53757     const/4 v5, 0x0
53759     invoke-virtual {p0, v0, v3, v4, v5}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
53761     move-result v4
53763     if-nez v4, :cond_3c
53765     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
53767     const/4 v5, 0x0
53769     invoke-virtual {v4, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
53771     :cond_3c
53772     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53774     monitor-exit p0
53776     goto :goto_b
53778     :catchall_41
53779     move-exception v4
53781     monitor-exit p0
53782     :try_end_43
53783     .catchall {:try_start_2 .. :try_end_43} :catchall_41
53785     throw v4
53786 .end method
53788 .method public setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;Z)V
53789     .registers 12
53791     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
53793     move-result-wide v0
53795     :try_start_4
53796     monitor-enter p0
53797     :try_end_5
53798     .catchall {:try_start_4 .. :try_end_5} :catchall_1a
53800     :try_start_5
53801     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)Lcom/android/server/am/ServiceRecord;
53803     move-result-object v2
53805     if-eqz v2, :cond_40
53807     if-eqz p3, :cond_45
53809     if-nez p4, :cond_1f
53811     new-instance v3, Ljava/lang/IllegalArgumentException;
53813     const-string v4, "null notification"
53815     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
53817     throw v3
53819     :catchall_17
53820     move-exception v3
53822     monitor-exit p0
53823     :try_end_19
53824     .catchall {:try_start_5 .. :try_end_19} :catchall_17
53826     :try_start_19
53827     throw v3
53828     :try_end_1a
53829     .catchall {:try_start_19 .. :try_end_1a} :catchall_1a
53831     :catchall_1a
53832     move-exception v3
53834     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53836     throw v3
53838     :cond_1f
53839     :try_start_1f
53840     iget v3, v2, Lcom/android/server/am/ServiceRecord;->foregroundId:I
53842     if-eq v3, p3, :cond_28
53844     invoke-virtual {v2}, Lcom/android/server/am/ServiceRecord;->cancelNotification()V
53846     iput p3, v2, Lcom/android/server/am/ServiceRecord;->foregroundId:I
53848     :cond_28
53849     iget v3, p4, Landroid/app/Notification;->flags:I
53851     or-int/lit8 v3, v3, 0x40
53853     iput v3, p4, Landroid/app/Notification;->flags:I
53855     iput-object p4, v2, Lcom/android/server/am/ServiceRecord;->foregroundNoti:Landroid/app/Notification;
53857     const/4 v3, 0x1
53859     iput-boolean v3, v2, Lcom/android/server/am/ServiceRecord;->isForeground:Z
53861     invoke-virtual {v2}, Lcom/android/server/am/ServiceRecord;->postNotification()V
53863     iget-object v3, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
53865     if-eqz v3, :cond_40
53867     iget-object v3, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
53869     const/4 v4, 0x1
53871     invoke-virtual {p0, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
53873     :cond_40
53874     :goto_40
53875     monitor-exit p0
53876     :try_end_41
53877     .catchall {:try_start_1f .. :try_end_41} :catchall_17
53879     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53881     return-void
53883     :cond_45
53884     :try_start_45
53885     iget-boolean v3, v2, Lcom/android/server/am/ServiceRecord;->isForeground:Z
53887     if-eqz v3, :cond_5d
53889     const/4 v3, 0x0
53891     iput-boolean v3, v2, Lcom/android/server/am/ServiceRecord;->isForeground:Z
53893     iget-object v3, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
53895     if-eqz v3, :cond_5d
53897     iget-object v3, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
53899     const/4 v4, 0x0
53901     const/4 v5, 0x1
53903     invoke-virtual {p0, v3, v4, v5}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
53905     iget-object v3, v2, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
53907     const/4 v4, 0x1
53909     invoke-virtual {p0, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
53911     :cond_5d
53912     if-eqz p5, :cond_40
53914     invoke-virtual {v2}, Lcom/android/server/am/ServiceRecord;->cancelNotification()V
53916     const/4 v3, 0x0
53918     iput v3, v2, Lcom/android/server/am/ServiceRecord;->foregroundId:I
53920     const/4 v3, 0x0
53922     iput-object v3, v2, Lcom/android/server/am/ServiceRecord;->foregroundNoti:Landroid/app/Notification;
53923     :try_end_68
53924     .catchall {:try_start_45 .. :try_end_68} :catchall_17
53926     goto :goto_40
53927 .end method
53929 .method public setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
53930     .registers 2
53932     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53934     return-void
53935 .end method
53937 .method public showBootMessage(Ljava/lang/CharSequence;Z)V
53938     .registers 4
53940     const-string v0, "showBootMessage"
53942     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
53944     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53946     invoke-virtual {v0, p1, p2}, Lcom/android/server/wm/WindowManagerService;->showBootMessage(Ljava/lang/CharSequence;Z)V
53948     return-void
53949 .end method
53951 .method final showLaunchWarningLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V
53952     .registers 5
53954     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
53956     if-nez v0, :cond_11
53958     const/4 v0, 0x1
53960     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
53962     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53964     new-instance v1, Lcom/android/server/am/ActivityManagerService$5;
53966     invoke-direct {v1, p0, p1, p2}, Lcom/android/server/am/ActivityManagerService$5;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V
53968     invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
53970     :cond_11
53971     return-void
53972 .end method
53974 .method public final showSafeModeOverlay()V
53975     .registers 7
53977     const/4 v5, -0x2
53979     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
53981     invoke-static {v2}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
53983     move-result-object v2
53985     const v3, 0x1090095
53987     const/4 v4, 0x0
53989     invoke-virtual {v2, v3, v4}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
53991     move-result-object v1
53993     new-instance v0, Landroid/view/WindowManager$LayoutParams;
53995     invoke-direct {v0}, Landroid/view/WindowManager$LayoutParams;-><init>()V
53997     const/16 v2, 0x7df
53999     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->type:I
54001     iput v5, v0, Landroid/view/WindowManager$LayoutParams;->width:I
54003     iput v5, v0, Landroid/view/WindowManager$LayoutParams;->height:I
54005     const/16 v2, 0x53
54007     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->gravity:I
54009     invoke-virtual {v1}, Landroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable;
54011     move-result-object v2
54013     invoke-virtual {v2}, Landroid/graphics/drawable/Drawable;->getOpacity()I
54015     move-result v2
54017     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->format:I
54019     const/16 v2, 0x18
54021     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->flags:I
54023     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
54025     const-string v3, "window"
54027     invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
54029     move-result-object v2
54031     check-cast v2, Landroid/view/WindowManager;
54033     invoke-interface {v2, v1, v0}, Landroid/view/WindowManager;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
54035     return-void
54036 .end method
54038 .method public showWaitingForDebugger(Landroid/app/IApplicationThread;Z)V
54039     .registers 6
54041     monitor-enter p0
54043     if-eqz p1, :cond_b
54045     :try_start_3
54046     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
54048     move-result-object v0
54050     :goto_7
54051     if-nez v0, :cond_d
54053     monitor-exit p0
54055     :goto_a
54056     return-void
54058     :cond_b
54059     const/4 v0, 0x0
54061     goto :goto_7
54063     :cond_d
54064     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
54066     move-result-object v1
54068     const/4 v2, 0x6
54070     iput v2, v1, Landroid/os/Message;->what:I
54072     iput-object v0, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
54074     if-eqz p2, :cond_25
54076     const/4 v2, 0x1
54078     :goto_19
54079     iput v2, v1, Landroid/os/Message;->arg1:I
54081     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
54083     invoke-virtual {v2, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
54085     monitor-exit p0
54087     goto :goto_a
54089     :catchall_22
54090     move-exception v2
54092     monitor-exit p0
54093     :try_end_24
54094     .catchall {:try_start_3 .. :try_end_24} :catchall_22
54096     throw v2
54098     :cond_25
54099     const/4 v2, 0x0
54101     goto :goto_19
54102 .end method
54104 .method public shutdown(I)Z
54105     .registers 11
54107     const-string v5, "android.permission.SHUTDOWN"
54109     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
54111     move-result v5
54113     if-eqz v5, :cond_10
54115     new-instance v5, Ljava/lang/SecurityException;
54117     const-string v6, "Requires permission android.permission.SHUTDOWN"
54119     invoke-direct {v5, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
54121     throw v5
54123     :cond_10
54124     const/4 v4, 0x0
54126     monitor-enter p0
54128     const/4 v5, 0x1
54130     :try_start_13
54131     iput-boolean v5, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
54133     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
54135     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54137     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
54139     if-eqz v5, :cond_4a
54141     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54143     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->stopIfSleepingLocked()V
54145     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
54147     move-result-wide v5
54149     int-to-long v7, p1
54151     add-long v2, v5, v7
54153     :goto_2a
54154     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54156     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
54158     if-nez v5, :cond_36
54160     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54162     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
54164     if-eqz v5, :cond_4a
54166     :cond_36
54167     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
54169     move-result-wide v5
54171     sub-long v0, v2, v5
54173     const-wide/16 v5, 0x0
54175     cmp-long v5, v0, v5
54177     if-gtz v5, :cond_56
54179     const-string v5, "ActivityManager"
54181     const-string v6, "Activity manager shutdown timed out"
54183     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
54185     const/4 v4, 0x1
54187     :cond_4a
54188     monitor-exit p0
54189     :try_end_4b
54190     .catchall {:try_start_13 .. :try_end_4b} :catchall_5c
54192     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
54194     invoke-virtual {v5}, Lcom/android/server/am/UsageStatsService;->shutdown()V
54196     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
54198     invoke-virtual {v5}, Lcom/android/server/am/BatteryStatsService;->shutdown()V
54200     return v4
54202     :cond_56
54203     :try_start_56
54204     invoke-virtual {p0}, Ljava/lang/Object;->wait()V
54205     :try_end_59
54206     .catchall {:try_start_56 .. :try_end_59} :catchall_5c
54207     .catch Ljava/lang/InterruptedException; {:try_start_56 .. :try_end_59} :catch_5a
54209     goto :goto_2a
54211     :catch_5a
54212     move-exception v5
54214     goto :goto_2a
54216     :catchall_5c
54217     move-exception v5
54219     :try_start_5d
54220     monitor-exit p0
54221     :try_end_5e
54222     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
54224     throw v5
54225 .end method
54227 .method public signalPersistentProcesses(I)V
54228     .registers 6
54229     .annotation system Ldalvik/annotation/Throws;
54230         value = {
54231             Landroid/os/RemoteException;
54232         }
54233     .end annotation
54235     const/16 v2, 0xa
54237     if-eq p1, v2, :cond_c
54239     new-instance v2, Ljava/lang/SecurityException;
54241     const-string v3, "Only SIGNAL_USR1 is allowed"
54243     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
54245     throw v2
54247     :cond_c
54248     monitor-enter p0
54250     :try_start_d
54251     const-string v2, "android.permission.SIGNAL_PERSISTENT_PROCESSES"
54253     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
54255     move-result v2
54257     if-eqz v2, :cond_20
54259     new-instance v2, Ljava/lang/SecurityException;
54261     const-string v3, "Requires permission android.permission.SIGNAL_PERSISTENT_PROCESSES"
54263     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
54265     throw v2
54267     :catchall_1d
54268     move-exception v2
54270     monitor-exit p0
54271     :try_end_1f
54272     .catchall {:try_start_d .. :try_end_1f} :catchall_1d
54274     throw v2
54276     :cond_20
54277     :try_start_20
54278     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
54280     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
54282     move-result v2
54284     add-int/lit8 v0, v2, -0x1
54286     :goto_28
54287     if-ltz v0, :cond_42
54289     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
54291     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
54293     move-result-object v1
54295     check-cast v1, Lcom/android/server/am/ProcessRecord;
54297     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
54299     if-eqz v2, :cond_3f
54301     iget-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->persistent:Z
54303     if-eqz v2, :cond_3f
54305     iget v2, v1, Lcom/android/server/am/ProcessRecord;->pid:I
54307     invoke-static {v2, p1}, Landroid/os/Process;->sendSignal(II)V
54309     :cond_3f
54310     add-int/lit8 v0, v0, -0x1
54312     goto :goto_28
54314     :cond_42
54315     monitor-exit p0
54316     :try_end_43
54317     .catchall {:try_start_20 .. :try_end_43} :catchall_1d
54319     return-void
54320 .end method
54322 .method skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
54323     .registers 6
54325     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
54327     array-length v2, v0
54329     const/4 v1, 0x0
54331     :goto_4
54332     if-ge v1, v2, :cond_e
54334     aget-object v3, v0, v1
54336     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
54338     add-int/lit8 v1, v1, 0x1
54340     goto :goto_4
54342     :cond_e
54343     return-void
54344 .end method
54346 .method skipPendingBroadcastLocked(I)V
54347     .registers 8
54349     const-string v4, "ActivityManager"
54351     const-string v5, "Unattached app died before broadcast acknowledged, skipping"
54353     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
54355     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
54357     array-length v2, v0
54359     const/4 v1, 0x0
54361     :goto_b
54362     if-ge v1, v2, :cond_15
54364     aget-object v3, v0, v1
54366     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->skipPendingBroadcastLocked(I)V
54368     add-int/lit8 v1, v1, 0x1
54370     goto :goto_b
54372     :cond_15
54373     return-void
54374 .end method
54376 .method public final startActivities(Landroid/app/IApplicationThread;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;)I
54377     .registers 15
54379     const-string v0, "startActivities"
54381     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
54383     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54385     const/4 v2, -0x1
54387     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
54389     move-result v7
54391     move-object v1, p1
54393     move-object v3, p2
54395     move-object v4, p3
54397     move-object v5, p4
54399     move-object v6, p5
54401     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityStack;->startActivities(Landroid/app/IApplicationThread;I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
54403     move-result v8
54405     return v8
54406 .end method
54408 .method public final startActivitiesInPackage(I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;)I
54409     .registers 16
54411     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
54413     move-result v8
54415     if-eqz v8, :cond_14
54417     invoke-static {}, Landroid/os/Process;->myUid()I
54419     move-result v0
54421     if-eq v8, v0, :cond_14
54423     new-instance v0, Ljava/lang/SecurityException;
54425     const-string v1, "startActivityInPackage only available to the system"
54427     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
54429     throw v0
54431     :cond_14
54432     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54434     const/4 v1, 0x0
54436     invoke-static {p1}, Landroid/os/UserId;->getUserId(I)I
54438     move-result v7
54440     move v2, p1
54442     move-object v3, p2
54444     move-object v4, p3
54446     move-object v5, p4
54448     move-object v6, p5
54450     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityStack;->startActivities(Landroid/app/IApplicationThread;I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
54452     move-result v9
54454     return v9
54455 .end method
54457 .method public final startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I
54458     .registers 26
54460     const-string v0, "startActivity"
54462     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
54464     const/4 v14, 0x0
54466     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getCategories()Ljava/util/Set;
54468     move-result-object v0
54470     if-eqz v0, :cond_38
54472     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getCategories()Ljava/util/Set;
54474     move-result-object v0
54476     const-string v1, "android.intent.category.HOME"
54478     invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
54480     move-result v0
54482     if-eqz v0, :cond_38
54484     iget v14, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
54486     :goto_1a
54487     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54489     const/4 v2, -0x1
54491     const/4 v11, 0x0
54493     const/4 v12, 0x0
54495     move-object/from16 v1, p1
54497     move-object/from16 v3, p2
54499     move-object/from16 v4, p3
54501     move-object/from16 v5, p4
54503     move-object/from16 v6, p5
54505     move/from16 v7, p6
54507     move/from16 v8, p7
54509     move-object/from16 v9, p8
54511     move-object/from16 v10, p9
54513     move-object/from16 v13, p10
54515     invoke-virtual/range {v0 .. v14}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
54517     move-result v0
54519     return v0
54521     :cond_38
54522     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
54524     move-result v0
54526     const/16 v1, 0x2710
54528     if-ge v0, v1, :cond_42
54530     const/4 v14, 0x0
54532     goto :goto_1a
54534     :cond_42
54535     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
54537     move-result v14
54539     goto :goto_1a
54540 .end method
54542 .method public final startActivityAndWait(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)Landroid/app/IActivityManager$WaitResult;
54543     .registers 26
54545     const-string v0, "startActivityAndWait"
54547     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
54549     new-instance v11, Landroid/app/IActivityManager$WaitResult;
54551     invoke-direct {v11}, Landroid/app/IActivityManager$WaitResult;-><init>()V
54553     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
54555     move-result v14
54557     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54559     const/4 v2, -0x1
54561     const/4 v12, 0x0
54563     move-object/from16 v1, p1
54565     move-object/from16 v3, p2
54567     move-object/from16 v4, p3
54569     move-object/from16 v5, p4
54571     move-object/from16 v6, p5
54573     move/from16 v7, p6
54575     move/from16 v8, p7
54577     move-object/from16 v9, p8
54579     move-object/from16 v10, p9
54581     move-object/from16 v13, p10
54583     invoke-virtual/range {v0 .. v14}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
54585     return-object v11
54586 .end method
54588 .method public final startActivityInPackage(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/os/Bundle;)I
54589     .registers 27
54591     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
54593     move-result v15
54595     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
54597     move-result v16
54599     if-eqz v16, :cond_1a
54601     invoke-static {}, Landroid/os/Process;->myUid()I
54603     move-result v1
54605     move/from16 v0, v16
54607     if-eq v0, v1, :cond_1a
54609     new-instance v1, Ljava/lang/SecurityException;
54611     const-string v2, "startActivityInPackage only available to the system"
54613     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
54615     throw v1
54617     :cond_1a
54618     move-object/from16 v0, p0
54620     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54622     const/4 v2, 0x0
54624     const/4 v10, 0x0
54626     const/4 v11, 0x0
54628     const/4 v12, 0x0
54630     const/4 v13, 0x0
54632     move/from16 v3, p1
54634     move-object/from16 v4, p2
54636     move-object/from16 v5, p3
54638     move-object/from16 v6, p4
54640     move-object/from16 v7, p5
54642     move/from16 v8, p6
54644     move/from16 v9, p7
54646     move-object/from16 v14, p8
54648     invoke-virtual/range {v1 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
54650     move-result v17
54652     return v17
54653 .end method
54655 .method public startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IntentSender;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
54656     .registers 25
54658     const-string v1, "startActivityIntentSender"
54660     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
54662     if-eqz p3, :cond_15
54664     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->hasFileDescriptors()Z
54666     move-result v1
54668     if-eqz v1, :cond_15
54670     new-instance v1, Ljava/lang/IllegalArgumentException;
54672     const-string v2, "File descriptors passed in Intent"
54674     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
54676     throw v1
54678     :cond_15
54679     invoke-virtual/range {p2 .. p2}, Landroid/content/IntentSender;->getTarget()Landroid/content/IIntentSender;
54681     move-result-object v13
54683     instance-of v1, v13, Lcom/android/server/am/PendingIntentRecord;
54685     if-nez v1, :cond_25
54687     new-instance v1, Ljava/lang/IllegalArgumentException;
54689     const-string v2, "Bad PendingIntent object"
54691     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
54693     throw v1
54695     :cond_25
54696     move-object v0, v13
54698     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
54700     monitor-enter p0
54702     :try_start_29
54703     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54705     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
54707     if-eqz v1, :cond_43
54709     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54711     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
54713     iget-object v1, v1, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
54715     iget-object v1, v1, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54717     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
54719     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
54721     move-result v2
54723     if-ne v1, v2, :cond_43
54725     const-wide/16 v1, 0x0
54727     iput-wide v1, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
54729     :cond_43
54730     monitor-exit p0
54731     :try_end_44
54732     .catchall {:try_start_29 .. :try_end_44} :catchall_5c
54734     const/4 v1, 0x0
54736     const/4 v4, 0x0
54738     const/4 v5, 0x0
54740     move-object/from16 v2, p3
54742     move-object/from16 v3, p4
54744     move-object/from16 v6, p5
54746     move-object/from16 v7, p6
54748     move/from16 v8, p7
54750     move/from16 v9, p8
54752     move/from16 v10, p9
54754     move-object/from16 v11, p10
54756     invoke-virtual/range {v0 .. v11}, Lcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
54758     move-result v12
54760     return v12
54762     :catchall_5c
54763     move-exception v1
54765     :try_start_5d
54766     monitor-exit p0
54767     :try_end_5e
54768     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
54770     throw v1
54771 .end method
54773 .method public final startActivityWithConfig(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/content/res/Configuration;Landroid/os/Bundle;)I
54774     .registers 27
54776     const-string v1, "startActivityWithConfig"
54778     move-object/from16 v0, p0
54780     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
54782     move-object/from16 v0, p0
54784     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54786     const/4 v3, -0x1
54788     const/4 v10, 0x0
54790     const/4 v11, 0x0
54792     const/4 v12, 0x0
54794     invoke-static {}, Landroid/os/Binder;->getOrigCallingUser()I
54796     move-result v15
54798     move-object/from16 v2, p1
54800     move-object/from16 v4, p2
54802     move-object/from16 v5, p3
54804     move-object/from16 v6, p4
54806     move-object/from16 v7, p5
54808     move/from16 v8, p6
54810     move/from16 v9, p7
54812     move-object/from16 v13, p8
54814     move-object/from16 v14, p9
54816     invoke-virtual/range {v1 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
54818     move-result v16
54820     return v16
54821 .end method
54823 .method startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
54824     .registers 5
54826     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
54828     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
54830     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
54832     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
54834     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
54836     invoke-static {v0, v1, v2}, Landroid/app/ApplicationErrorReport;->getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;
54838     move-result-object v0
54840     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
54842     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
54844     return-void
54845 .end method
54847 .method startHomeActivityLocked(I)Z
54848     .registers 20
54850     move-object/from16 v0, p0
54852     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
54854     if-eqz v2, :cond_b
54856     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->ensureBootCompleted()V
54858     const/4 v2, 0x0
54860     :goto_a
54861     return v2
54863     :cond_b
54864     move-object/from16 v0, p0
54866     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
54868     const/4 v3, 0x1
54870     if-ne v2, v3, :cond_1a
54872     move-object/from16 v0, p0
54874     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
54876     if-nez v2, :cond_1a
54878     const/4 v2, 0x0
54880     goto :goto_a
54882     :cond_1a
54883     new-instance v4, Landroid/content/Intent;
54885     move-object/from16 v0, p0
54887     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
54889     move-object/from16 v0, p0
54891     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
54893     if-eqz v2, :cond_ac
54895     move-object/from16 v0, p0
54897     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
54899     invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
54901     move-result-object v2
54903     :goto_2e
54904     invoke-direct {v4, v3, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
54906     move-object/from16 v0, p0
54908     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
54910     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
54912     move-object/from16 v0, p0
54914     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
54916     const/4 v3, 0x1
54918     if-eq v2, v3, :cond_44
54920     const-string v2, "android.intent.category.HOME"
54922     invoke-virtual {v4, v2}, Landroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
54924     :cond_44
54925     move-object/from16 v0, p0
54927     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
54929     invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
54931     move-result-object v2
54933     const/16 v3, 0x400
54935     invoke-virtual {v4, v2, v3}, Landroid/content/Intent;->resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo;
54937     move-result-object v16
54939     if-eqz v16, :cond_ae
54941     new-instance v2, Landroid/content/ComponentName;
54943     move-object/from16 v0, v16
54945     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54947     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
54949     move-object/from16 v0, v16
54951     iget-object v5, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
54953     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
54955     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
54957     new-instance v6, Landroid/content/pm/ActivityInfo;
54959     move-object/from16 v0, v16
54961     invoke-direct {v6, v0}, Landroid/content/pm/ActivityInfo;-><init>(Landroid/content/pm/ActivityInfo;)V
54963     iget-object v2, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54965     move-object/from16 v0, p0
54967     move/from16 v1, p1
54969     invoke-direct {v0, v2, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
54971     move-result-object v2
54973     iput-object v2, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54975     iget-object v2, v6, Landroid/content/pm/ActivityInfo;->processName:Ljava/lang/String;
54977     iget-object v3, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54979     iget v3, v3, Landroid/content/pm/ApplicationInfo;->uid:I
54981     move-object/from16 v0, p0
54983     invoke-virtual {v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
54985     move-result-object v17
54987     if-eqz v17, :cond_8d
54989     move-object/from16 v0, v17
54991     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
54993     if-nez v2, :cond_a9
54995     :cond_8d
54996     invoke-virtual {v4}, Landroid/content/Intent;->getFlags()I
54998     move-result v2
55000     const/high16 v3, 0x1000
55002     or-int/2addr v2, v3
55004     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
55006     move-object/from16 v0, p0
55008     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
55010     const/4 v3, 0x0
55012     const/4 v5, 0x0
55014     const/4 v7, 0x0
55016     const/4 v8, 0x0
55018     const/4 v9, 0x0
55020     const/4 v10, 0x0
55022     const/4 v11, 0x0
55024     const/4 v12, 0x0
55026     const/4 v13, 0x0
55028     const/4 v14, 0x0
55030     const/4 v15, 0x0
55032     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
55034     :cond_a9
55035     :goto_a9
55036     const/4 v2, 0x1
55038     goto/16 :goto_a
55040     :cond_ac
55041     const/4 v2, 0x0
55043     goto :goto_2e
55045     :cond_ae
55046     move-object/from16 v6, v16
55048     goto :goto_a9
55049 .end method
55051 .method public startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;)Z
55052     .registers 24
55054     const-string v3, "startInstrumentation"
55056     move-object/from16 v0, p0
55058     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
55060     if-eqz p4, :cond_17
55062     invoke-virtual/range {p4 .. p4}, Landroid/os/Bundle;->hasFileDescriptors()Z
55064     move-result v3
55066     if-eqz v3, :cond_17
55068     new-instance v3, Ljava/lang/IllegalArgumentException;
55070     const-string v4, "File descriptors passed in Bundle"
55072     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
55074     throw v3
55076     :cond_17
55077     monitor-enter p0
55079     const/4 v13, 0x0
55081     const/4 v11, 0x0
55083     :try_start_1a
55084     move-object/from16 v0, p0
55086     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
55088     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
55090     move-result-object v3
55092     const/16 v4, 0x400
55094     move-object/from16 v0, p1
55096     invoke-virtual {v3, v0, v4}, Landroid/content/pm/PackageManager;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;
55098     move-result-object v13
55100     move-object/from16 v0, p0
55102     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
55104     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
55106     move-result-object v3
55108     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
55110     const/16 v5, 0x400
55112     invoke-virtual {v3, v4, v5}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
55113     :try_end_39
55114     .catchall {:try_start_1a .. :try_end_39} :catchall_80
55115     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_1a .. :try_end_39} :catch_128
55117     move-result-object v11
55119     :goto_3a
55120     if-nez v13, :cond_5d
55122     :try_start_3c
55123     new-instance v3, Ljava/lang/StringBuilder;
55125     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
55127     const-string v4, "Unable to find instrumentation info for: "
55129     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55131     move-result-object v3
55133     move-object/from16 v0, p1
55135     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
55137     move-result-object v3
55139     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55141     move-result-object v3
55143     move-object/from16 v0, p0
55145     move-object/from16 v1, p5
55147     move-object/from16 v2, p1
55149     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
55151     const/4 v3, 0x0
55153     monitor-exit p0
55155     :goto_5c
55156     return v3
55158     :cond_5d
55159     if-nez v11, :cond_83
55161     new-instance v3, Ljava/lang/StringBuilder;
55163     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
55165     const-string v4, "Unable to find instrumentation target package: "
55167     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55169     move-result-object v3
55171     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
55173     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55175     move-result-object v3
55177     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55179     move-result-object v3
55181     move-object/from16 v0, p0
55183     move-object/from16 v1, p5
55185     move-object/from16 v2, p1
55187     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
55189     const/4 v3, 0x0
55191     monitor-exit p0
55193     goto :goto_5c
55195     :catchall_80
55196     move-exception v3
55198     monitor-exit p0
55199     :try_end_82
55200     .catchall {:try_start_3c .. :try_end_82} :catchall_80
55202     throw v3
55204     :cond_83
55205     :try_start_83
55206     move-object/from16 v0, p0
55208     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
55210     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
55212     move-result-object v3
55214     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
55216     iget-object v5, v13, Landroid/content/pm/InstrumentationInfo;->packageName:Ljava/lang/String;
55218     invoke-virtual {v3, v4, v5}, Landroid/content/pm/PackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
55220     move-result v14
55222     if-gez v14, :cond_f0
55224     const/4 v3, -0x1
55226     if-eq v14, v3, :cond_f0
55228     new-instance v3, Ljava/lang/StringBuilder;
55230     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
55232     const-string v4, "Permission Denial: starting instrumentation "
55234     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55236     move-result-object v3
55238     move-object/from16 v0, p1
55240     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
55242     move-result-object v3
55244     const-string v4, " from pid="
55246     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55248     move-result-object v3
55250     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
55252     move-result v4
55254     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55256     move-result-object v3
55258     const-string v4, ", uid="
55260     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55262     move-result-object v3
55264     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
55266     move-result v4
55268     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55270     move-result-object v3
55272     const-string v4, " not allowed because package "
55274     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55276     move-result-object v3
55278     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->packageName:Ljava/lang/String;
55280     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55282     move-result-object v3
55284     const-string v4, " does not have a signature matching the target "
55286     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55288     move-result-object v3
55290     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
55292     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55294     move-result-object v3
55296     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55298     move-result-object v15
55300     move-object/from16 v0, p0
55302     move-object/from16 v1, p5
55304     move-object/from16 v2, p1
55306     invoke-direct {v0, v1, v2, v15}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
55308     new-instance v3, Ljava/lang/SecurityException;
55310     invoke-direct {v3, v15}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
55312     throw v3
55314     :cond_f0
55315     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
55317     move-result v10
55319     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
55321     move-result-wide v16
55323     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
55325     const/4 v5, -0x1
55327     const/4 v6, 0x1
55329     const/4 v7, 0x0
55331     const/4 v8, 0x1
55333     const/4 v9, 0x1
55335     move-object/from16 v3, p0
55337     invoke-direct/range {v3 .. v10}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
55339     const/4 v3, 0x0
55341     move-object/from16 v0, p0
55343     invoke-virtual {v0, v11, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
55345     move-result-object v12
55347     move-object/from16 v0, p1
55349     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
55351     iput-object v11, v12, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
55353     move-object/from16 v0, p2
55355     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
55357     move-object/from16 v0, p4
55359     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
55361     move-object/from16 v0, p5
55363     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
55365     move-object/from16 v0, p1
55367     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationResultClass:Landroid/content/ComponentName;
55369     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
55371     monitor-exit p0
55372     :try_end_125
55373     .catchall {:try_start_83 .. :try_end_125} :catchall_80
55375     const/4 v3, 0x1
55377     goto/16 :goto_5c
55379     :catch_128
55380     move-exception v3
55382     goto/16 :goto_3a
55383 .end method
55385 .method public startNextMatchingActivity(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/Bundle;)Z
55386     .registers 30
55388     if-eqz p2, :cond_11
55390     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->hasFileDescriptors()Z
55392     move-result v2
55394     const/4 v3, 0x1
55396     if-ne v2, v3, :cond_11
55398     new-instance v2, Ljava/lang/IllegalArgumentException;
55400     const-string v3, "File descriptors passed in Intent"
55402     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
55404     throw v2
55406     :cond_11
55407     monitor-enter p0
55409     :try_start_12
55410     move-object/from16 v0, p0
55412     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
55414     move-object/from16 v0, p1
55416     invoke-virtual {v2, v0}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
55418     move-result-object v20
55420     if-nez v20, :cond_24
55422     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
55424     const/4 v2, 0x0
55426     monitor-exit p0
55428     :goto_23
55429     return v2
55431     :cond_24
55432     move-object/from16 v0, v20
55434     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
55436     if-eqz v2, :cond_32
55438     move-object/from16 v0, v20
55440     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
55442     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55444     if-nez v2, :cond_3b
55446     :cond_32
55447     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
55449     const/4 v2, 0x0
55451     monitor-exit p0
55453     goto :goto_23
55455     :catchall_38
55456     move-exception v2
55458     :goto_39
55459     monitor-exit p0
55460     :try_end_3a
55461     .catchall {:try_start_12 .. :try_end_3a} :catchall_38
55463     throw v2
55465     :cond_3b
55466     :try_start_3b
55467     new-instance v4, Landroid/content/Intent;
55469     move-object/from16 v0, p2
55471     invoke-direct {v4, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
55472     :try_end_42
55473     .catchall {:try_start_3b .. :try_end_42} :catchall_38
55475     :try_start_42
55476     move-object/from16 v0, v20
55478     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
55480     invoke-virtual {v2}, Landroid/content/Intent;->getData()Landroid/net/Uri;
55482     move-result-object v2
55484     move-object/from16 v0, v20
55486     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
55488     invoke-virtual {v3}, Landroid/content/Intent;->getType()Ljava/lang/String;
55490     move-result-object v3
55492     invoke-virtual {v4, v2, v3}, Landroid/content/Intent;->setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;
55494     const/4 v2, 0x0
55496     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
55497     :try_end_59
55498     .catchall {:try_start_42 .. :try_end_59} :catchall_14b
55500     const/4 v6, 0x0
55502     :try_start_5a
55503     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
55505     move-result-object v2
55507     move-object/from16 v0, v20
55509     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->resolvedType:Ljava/lang/String;
55511     const v5, 0x10400
55513     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
55515     move-result v7
55517     invoke-interface {v2, v4, v3, v5, v7}, Landroid/content/pm/IPackageManager;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
55519     move-result-object v23
55521     if-eqz v23, :cond_c6
55523     invoke-interface/range {v23 .. v23}, Ljava/util/List;->size()I
55525     move-result v16
55527     :goto_73
55528     const/16 v17, 0x0
55530     :goto_75
55531     move/from16 v0, v17
55533     move/from16 v1, v16
55535     if-ge v0, v1, :cond_bb
55537     move-object/from16 v0, v23
55539     move/from16 v1, v17
55541     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
55543     move-result-object v21
55545     check-cast v21, Landroid/content/pm/ResolveInfo;
55547     move-object/from16 v0, v21
55549     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
55551     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
55553     move-object/from16 v0, v20
55555     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
55557     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
55559     move-result v2
55561     if-eqz v2, :cond_c9
55563     move-object/from16 v0, v21
55565     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
55567     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
55569     move-object/from16 v0, v20
55571     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
55573     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
55575     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
55577     move-result v2
55579     if-eqz v2, :cond_c9
55581     add-int/lit8 v17, v17, 0x1
55583     move/from16 v0, v17
55585     move/from16 v1, v16
55587     if-ge v0, v1, :cond_bb
55589     move-object/from16 v0, v23
55591     move/from16 v1, v17
55593     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
55595     move-result-object v2
55597     check-cast v2, Landroid/content/pm/ResolveInfo;
55599     iget-object v6, v2, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
55600     :try_end_bb
55601     .catchall {:try_start_5a .. :try_end_bb} :catchall_14b
55602     .catch Landroid/os/RemoteException; {:try_start_5a .. :try_end_bb} :catch_150
55604     :cond_bb
55605     :goto_bb
55606     if-nez v6, :cond_cc
55608     :try_start_bd
55609     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
55611     const/4 v2, 0x0
55613     monitor-exit p0
55615     move-object/from16 p2, v4
55617     goto/16 :goto_23
55619     :cond_c6
55620     const/16 v16, 0x0
55622     goto :goto_73
55624     :cond_c9
55625     add-int/lit8 v17, v17, 0x1
55627     goto :goto_75
55629     :cond_cc
55630     new-instance v2, Landroid/content/ComponentName;
55632     iget-object v3, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
55634     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
55636     iget-object v5, v6, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
55638     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
55640     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
55642     invoke-virtual {v4}, Landroid/content/Intent;->getFlags()I
55644     move-result v2
55646     const v3, -0x1e000001
55648     and-int/2addr v2, v3
55650     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
55652     move-object/from16 v0, v20
55654     iget-boolean v0, v0, Lcom/android/server/am/ActivityRecord;->finishing:Z
55656     move/from16 v25, v0
55658     const/4 v2, 0x1
55660     move-object/from16 v0, v20
55662     iput-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->finishing:Z
55664     move-object/from16 v0, v20
55666     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
55668     move-object/from16 v24, v0
55670     move-object/from16 v0, v20
55672     iget-object v8, v0, Lcom/android/server/am/ActivityRecord;->resultWho:Ljava/lang/String;
55674     move-object/from16 v0, v20
55676     iget v9, v0, Lcom/android/server/am/ActivityRecord;->requestCode:I
55678     const/4 v2, 0x0
55680     move-object/from16 v0, v20
55682     iput-object v2, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
55684     if-eqz v24, :cond_10c
55686     move-object/from16 v0, v24
55688     move-object/from16 v1, v20
55690     invoke-virtual {v0, v1, v8, v9}, Lcom/android/server/am/ActivityRecord;->removeResultsLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I)V
55692     :cond_10c
55693     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
55695     move-result-wide v18
55697     move-object/from16 v0, p0
55699     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
55701     move-object/from16 v0, v20
55703     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
55705     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55707     move-object/from16 v0, v20
55709     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->resolvedType:Ljava/lang/String;
55711     if-eqz v24, :cond_143
55713     move-object/from16 v0, v24
55715     iget-object v7, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
55717     :goto_124
55718     const/4 v10, -0x1
55720     move-object/from16 v0, v20
55722     iget v11, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
55724     const/4 v12, 0x0
55726     const/4 v14, 0x0
55728     const/4 v15, 0x0
55730     move-object/from16 v13, p3
55732     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
55734     move-result v22
55736     invoke-static/range {v18 .. v19}, Landroid/os/Binder;->restoreCallingIdentity(J)V
55738     move/from16 v0, v25
55740     move-object/from16 v1, v20
55742     iput-boolean v0, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
55744     if-eqz v22, :cond_145
55746     const/4 v2, 0x0
55748     monitor-exit p0
55750     move-object/from16 p2, v4
55752     goto/16 :goto_23
55754     :cond_143
55755     const/4 v7, 0x0
55757     goto :goto_124
55759     :cond_145
55760     const/4 v2, 0x1
55762     monitor-exit p0
55763     :try_end_147
55764     .catchall {:try_start_bd .. :try_end_147} :catchall_14b
55766     move-object/from16 p2, v4
55768     goto/16 :goto_23
55770     :catchall_14b
55771     move-exception v2
55773     move-object/from16 p2, v4
55775     goto/16 :goto_39
55777     :catch_150
55778     move-exception v2
55780     goto/16 :goto_bb
55781 .end method
55783 .method final startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
55784     .registers 15
55786     if-nez p8, :cond_1b
55788     iget v2, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55790     invoke-virtual {p0, p1, v2}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
55792     move-result-object v0
55794     :goto_8
55795     if-eqz v0, :cond_22
55797     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
55799     if-lez v2, :cond_22
55801     if-eqz p3, :cond_14
55803     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55805     if-nez v2, :cond_1d
55807     :cond_14
55808     iget-object v2, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
55810     invoke-virtual {v0, v2}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
55812     move-object v2, v0
55814     :goto_1a
55815     return-object v2
55817     :cond_1b
55818     const/4 v0, 0x0
55820     goto :goto_8
55822     :cond_1d
55823     const/4 v2, 0x1
55825     const/4 v3, 0x1
55827     invoke-direct {p0, v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
55829     :cond_22
55830     if-eqz p6, :cond_3c
55832     invoke-virtual {p6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
55834     move-result-object v1
55836     :goto_28
55837     if-nez p8, :cond_77
55839     and-int/lit8 v2, p4, 0x4
55841     if-eqz v2, :cond_3e
55843     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
55845     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
55847     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55849     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
55851     move-result-object v2
55853     if-eqz v2, :cond_77
55855     const/4 v2, 0x0
55857     goto :goto_1a
55859     :cond_3c
55860     const/4 v1, 0x0
55862     goto :goto_28
55864     :cond_3e
55865     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
55867     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
55869     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55871     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
55873     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
55875     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
55877     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55879     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
55881     move-result-object v2
55883     if-eqz v2, :cond_77
55885     const/16 v2, 0x7540
55887     const/4 v3, 0x2
55889     new-array v3, v3, [Ljava/lang/Object;
55891     const/4 v4, 0x0
55893     iget v5, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55895     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
55897     move-result-object v5
55899     aput-object v5, v3, v4
55901     const/4 v4, 0x1
55903     iget-object v5, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
55905     aput-object v5, v3, v4
55907     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
55909     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
55911     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
55913     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55915     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
55917     if-eqz v0, :cond_77
55919     const/4 v2, 0x0
55921     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
55923     :cond_77
55924     if-nez v0, :cond_dd
55926     const/4 v2, 0x0
55928     invoke-virtual {p0, v2, p2, p1, p8}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
55930     move-result-object v0
55932     if-nez v0, :cond_b1
55934     const-string v2, "ActivityManager"
55936     new-instance v3, Ljava/lang/StringBuilder;
55938     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
55940     const-string v4, "Failed making new process record for "
55942     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55944     move-result-object v3
55946     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55948     move-result-object v3
55950     const-string v4, "/"
55952     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55954     move-result-object v3
55956     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
55958     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55960     move-result-object v3
55962     const-string v4, " isolated="
55964     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55966     move-result-object v3
55968     invoke-virtual {v3, p8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
55970     move-result-object v3
55972     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55974     move-result-object v3
55976     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
55978     const/4 v2, 0x0
55980     goto/16 :goto_1a
55982     :cond_b1
55983     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
55985     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
55987     invoke-virtual {v2, p1, v3, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
55989     if-eqz p8, :cond_c1
55991     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
55993     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
55995     invoke-virtual {v2, v3, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
55997     :cond_c1
55998     :goto_c1
55999     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
56001     if-nez v2, :cond_e3
56003     invoke-virtual {p0, p2}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
56005     move-result v2
56007     if-nez v2, :cond_e3
56009     if-nez p7, :cond_e3
56011     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
56013     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
56015     move-result v2
56017     if-nez v2, :cond_da
56019     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
56021     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
56023     :cond_da
56024     move-object v2, v0
56026     goto/16 :goto_1a
56028     :cond_dd
56029     iget-object v2, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
56031     invoke-virtual {v0, v2}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
56033     goto :goto_c1
56035     :cond_e3
56036     invoke-direct {p0, v0, p5, v1}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
56038     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
56040     if-eqz v2, :cond_ed
56042     move-object v2, v0
56044     goto/16 :goto_1a
56046     :cond_ed
56047     const/4 v2, 0x0
56049     goto/16 :goto_1a
56050 .end method
56052 .method public final startRunning(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
56053     .registers 7
56055     const/4 v1, 0x0
56057     monitor-enter p0
56059     :try_start_2
56060     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
56062     if-eqz v0, :cond_8
56064     monitor-exit p0
56066     :goto_7
56067     return-void
56069     :cond_8
56070     const/4 v0, 0x1
56072     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
56074     if-eqz p1, :cond_25
56076     if-eqz p2, :cond_25
56078     new-instance v0, Landroid/content/ComponentName;
56080     invoke-direct {v0, p1, p2}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
56082     :goto_14
56083     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
56085     if-eqz p3, :cond_27
56087     :goto_18
56088     iput-object p3, p0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
56090     iput-object p4, p0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
56092     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
56094     if-nez v0, :cond_2a
56096     monitor-exit p0
56098     goto :goto_7
56100     :catchall_22
56101     move-exception v0
56103     monitor-exit p0
56104     :try_end_24
56105     .catchall {:try_start_2 .. :try_end_24} :catchall_22
56107     throw v0
56109     :cond_25
56110     move-object v0, v1
56112     goto :goto_14
56114     :cond_27
56115     :try_start_27
56116     const-string p3, "android.intent.action.MAIN"
56118     goto :goto_18
56120     :cond_2a
56121     monitor-exit p0
56122     :try_end_2b
56123     .catchall {:try_start_27 .. :try_end_2b} :catchall_22
56125     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;)V
56127     goto :goto_7
56128 .end method
56130 .method public startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;)Landroid/content/ComponentName;
56131     .registers 13
56133     const-string v0, "startService"
56135     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
56137     if-eqz p2, :cond_16
56139     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
56141     move-result v0
56143     const/4 v1, 0x1
56145     if-ne v0, v1, :cond_16
56147     new-instance v0, Ljava/lang/IllegalArgumentException;
56149     const-string v1, "File descriptors passed in Intent"
56151     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
56153     throw v0
56155     :cond_16
56156     monitor-enter p0
56158     :try_start_17
56159     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
56161     move-result v4
56163     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
56165     move-result v5
56167     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56169     move-result-wide v6
56171     move-object v0, p0
56173     move-object v1, p1
56175     move-object v2, p2
56177     move-object v3, p3
56179     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/ComponentName;
56181     move-result-object v8
56183     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56185     monitor-exit p0
56187     return-object v8
56189     :catchall_30
56190     move-exception v0
56192     monitor-exit p0
56193     :try_end_32
56194     .catchall {:try_start_17 .. :try_end_32} :catchall_30
56196     throw v0
56197 .end method
56199 .method startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;)Landroid/content/ComponentName;
56200     .registers 13
56202     monitor-enter p0
56204     :try_start_1
56205     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56207     move-result-wide v6
56209     const/4 v1, 0x0
56211     const/4 v4, -0x1
56213     move-object v0, p0
56215     move-object v2, p2
56217     move-object v3, p3
56219     move v5, p1
56221     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/ComponentName;
56223     move-result-object v8
56225     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56227     monitor-exit p0
56229     return-object v8
56231     :catchall_14
56232     move-exception v0
56234     monitor-exit p0
56235     :try_end_16
56236     .catchall {:try_start_1 .. :try_end_16} :catchall_14
56238     throw v0
56239 .end method
56241 .method startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/ComponentName;
56242     .registers 16
56244     const/4 v9, 0x0
56246     monitor-enter p0
56248     if-eqz p1, :cond_3e
56250     :try_start_4
56251     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
56253     move-result-object v6
56255     if-nez v6, :cond_3e
56257     new-instance v0, Ljava/lang/SecurityException;
56259     new-instance v1, Ljava/lang/StringBuilder;
56261     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
56263     const-string v2, "Unable to find app for caller "
56265     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56267     move-result-object v1
56269     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56271     move-result-object v1
56273     const-string v2, " (pid="
56275     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56277     move-result-object v1
56279     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
56281     move-result v2
56283     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
56285     move-result-object v1
56287     const-string v2, ") when starting service "
56289     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56291     move-result-object v1
56293     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56295     move-result-object v1
56297     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56299     move-result-object v1
56301     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
56303     throw v0
56305     :catchall_3b
56306     move-exception v0
56308     monitor-exit p0
56309     :try_end_3d
56310     .catchall {:try_start_4 .. :try_end_3d} :catchall_3b
56312     throw v0
56314     :cond_3e
56315     :try_start_3e
56316     invoke-static {p5}, Landroid/os/UserId;->getUserId(I)I
56318     move-result v5
56320     move-object v0, p0
56322     move-object v1, p2
56324     move-object v2, p3
56326     move v3, p4
56328     move v4, p5
56330     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
56332     move-result-object v8
56334     if-nez v8, :cond_50
56336     monitor-exit p0
56338     move-object v0, v9
56340     :goto_4f
56341     return-object v0
56343     :cond_50
56344     iget-object v0, v8, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
56346     if-nez v0, :cond_66
56348     new-instance v0, Landroid/content/ComponentName;
56350     const-string v2, "!"
56352     iget-object v1, v8, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->permission:Ljava/lang/String;
56354     if-eqz v1, :cond_63
56356     iget-object v1, v8, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->permission:Ljava/lang/String;
56358     :goto_5e
56359     invoke-direct {v0, v2, v1}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
56361     monitor-exit p0
56363     goto :goto_4f
56365     :cond_63
56366     const-string v1, "private to package"
56368     goto :goto_5e
56370     :cond_66
56371     iget-object v7, v8, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
56373     iget-object v2, v7, Lcom/android/server/am/ServiceRecord;->packageName:Ljava/lang/String;
56375     invoke-virtual {p2}, Landroid/content/Intent;->getFlags()I
56377     move-result v4
56379     const/4 v5, 0x0
56381     move-object v0, p0
56383     move v1, p5
56385     move-object v3, p2
56387     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
56389     move-result-object v5
56391     invoke-direct {p0, v7}, Lcom/android/server/am/ActivityManagerService;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)Z
56393     move-result v0
56395     if-eqz v0, :cond_7c
56397     :cond_7c
56398     const/4 v0, 0x1
56400     iput-boolean v0, v7, Lcom/android/server/am/ServiceRecord;->startRequested:Z
56402     const/4 v0, 0x0
56404     iput-boolean v0, v7, Lcom/android/server/am/ServiceRecord;->callStart:Z
56406     iget-object v9, v7, Lcom/android/server/am/ServiceRecord;->pendingStarts:Ljava/util/ArrayList;
56408     new-instance v0, Lcom/android/server/am/ServiceRecord$StartItem;
56410     const/4 v2, 0x0
56412     invoke-virtual {v7}, Lcom/android/server/am/ServiceRecord;->makeNextStartId()I
56414     move-result v3
56416     move-object v1, v7
56418     move-object v4, p2
56420     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;)V
56422     invoke-virtual {v9, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
56424     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
56426     move-result-wide v0
56428     iput-wide v0, v7, Lcom/android/server/am/ServiceRecord;->lastActivity:J
56430     iget-object v0, v7, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
56432     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
56434     move-result-object v1
56436     monitor-enter v1
56437     :try_end_a0
56438     .catchall {:try_start_3e .. :try_end_a0} :catchall_3b
56440     :try_start_a0
56441     iget-object v0, v7, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
56443     invoke-virtual {v0}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked()V
56445     monitor-exit v1
56446     :try_end_a6
56447     .catchall {:try_start_a0 .. :try_end_a6} :catchall_bc
56449     :try_start_a6
56450     invoke-virtual {p2}, Landroid/content/Intent;->getFlags()I
56452     move-result v0
56454     const/4 v1, 0x0
56456     invoke-direct {p0, v7, v0, v1}, Lcom/android/server/am/ActivityManagerService;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
56458     move-result v0
56460     if-nez v0, :cond_bf
56462     new-instance v0, Landroid/content/ComponentName;
56464     const-string v1, "!"
56466     const-string v2, "Service process is bad"
56468     invoke-direct {v0, v1, v2}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
56470     monitor-exit p0
56471     :try_end_bb
56472     .catchall {:try_start_a6 .. :try_end_bb} :catchall_3b
56474     goto :goto_4f
56476     :catchall_bc
56477     move-exception v0
56479     :try_start_bd
56480     monitor-exit v1
56481     :try_end_be
56482     .catchall {:try_start_bd .. :try_end_be} :catchall_bc
56484     :try_start_be
56485     throw v0
56487     :cond_bf
56488     iget-object v0, v7, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
56490     monitor-exit p0
56491     :try_end_c2
56492     .catchall {:try_start_be .. :try_end_c2} :catchall_3b
56494     goto :goto_4f
56495 .end method
56497 .method startSetupActivityLocked()V
56498     .registers 23
56500     move-object/from16 v0, p0
56502     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mCheckedForSetup:Z
56504     if-eqz v2, :cond_7
56506     :cond_6
56507     :goto_6
56508     return-void
56510     :cond_7
56511     move-object/from16 v0, p0
56513     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
56515     invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
56517     move-result-object v18
56519     move-object/from16 v0, p0
56521     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
56523     const/4 v3, 0x1
56525     if-eq v2, v3, :cond_6
56527     const-string v2, "device_provisioned"
56529     const/4 v3, 0x0
56531     move-object/from16 v0, v18
56533     invoke-static {v0, v2, v3}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
56535     move-result v2
56537     if-eqz v2, :cond_6
56539     const/4 v2, 0x1
56541     move-object/from16 v0, p0
56543     iput-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mCheckedForSetup:Z
56545     new-instance v4, Landroid/content/Intent;
56547     const-string v2, "android.intent.action.UPGRADE_SETUP"
56549     invoke-direct {v4, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
56551     sget-object v2, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
56553     iget-object v2, v2, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
56555     invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
56557     move-result-object v2
56559     const/16 v3, 0x80
56561     invoke-virtual {v2, v4, v3}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
56563     move-result-object v20
56565     const/16 v19, 0x0
56567     const/16 v16, 0x0
56569     :goto_3f
56570     if-eqz v20, :cond_67
56572     invoke-interface/range {v20 .. v20}, Ljava/util/List;->size()I
56574     move-result v2
56576     move/from16 v0, v16
56578     if-ge v0, v2, :cond_67
56580     move-object/from16 v0, v20
56582     move/from16 v1, v16
56584     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
56586     move-result-object v2
56588     check-cast v2, Landroid/content/pm/ResolveInfo;
56590     iget-object v2, v2, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56592     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
56594     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
56596     and-int/lit8 v2, v2, 0x1
56598     if-eqz v2, :cond_dc
56600     move-object/from16 v0, v20
56602     move/from16 v1, v16
56604     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
56606     move-result-object v19
56608     check-cast v19, Landroid/content/pm/ResolveInfo;
56610     :cond_67
56611     if-eqz v19, :cond_6
56613     move-object/from16 v0, v19
56615     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56617     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->metaData:Landroid/os/Bundle;
56619     if-eqz v2, :cond_e0
56621     move-object/from16 v0, v19
56623     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56625     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->metaData:Landroid/os/Bundle;
56627     const-string v3, "android.SETUP_VERSION"
56629     invoke-virtual {v2, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
56631     move-result-object v21
56633     :goto_7d
56634     if-nez v21, :cond_97
56636     move-object/from16 v0, v19
56638     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56640     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
56642     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle;
56644     if-eqz v2, :cond_97
56646     move-object/from16 v0, v19
56648     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56650     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
56652     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle;
56654     const-string v3, "android.SETUP_VERSION"
56656     invoke-virtual {v2, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
56658     move-result-object v21
56660     :cond_97
56661     const-string v2, "last_setup_shown"
56663     move-object/from16 v0, v18
56665     invoke-static {v0, v2}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
56667     move-result-object v17
56669     if-eqz v21, :cond_6
56671     move-object/from16 v0, v21
56673     move-object/from16 v1, v17
56675     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
56677     move-result v2
56679     if-nez v2, :cond_6
56681     const/high16 v2, 0x1000
56683     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
56685     new-instance v2, Landroid/content/ComponentName;
56687     move-object/from16 v0, v19
56689     iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56691     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
56693     move-object/from16 v0, v19
56695     iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56697     iget-object v5, v5, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
56699     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
56701     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
56703     move-object/from16 v0, p0
56705     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
56707     const/4 v3, 0x0
56709     const/4 v5, 0x0
56711     move-object/from16 v0, v19
56713     iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
56715     const/4 v7, 0x0
56717     const/4 v8, 0x0
56719     const/4 v9, 0x0
56721     const/4 v10, 0x0
56723     const/4 v11, 0x0
56725     const/4 v12, 0x0
56727     const/4 v13, 0x0
56729     const/4 v14, 0x0
56731     const/4 v15, 0x0
56733     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
56735     goto/16 :goto_6
56737     :cond_dc
56738     add-int/lit8 v16, v16, 0x1
56740     goto/16 :goto_3f
56742     :cond_e0
56743     const/16 v21, 0x0
56745     goto :goto_7d
56746 .end method
56748 .method public stopAppSwitches()V
56749     .registers 6
56751     const-wide/16 v3, 0x1388
56753     const-string v1, "android.permission.STOP_APP_SWITCHES"
56755     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
56757     move-result v1
56759     if-eqz v1, :cond_12
56761     new-instance v1, Ljava/lang/SecurityException;
56763     const-string v2, "Requires permission android.permission.STOP_APP_SWITCHES"
56765     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
56767     throw v1
56769     :cond_12
56770     monitor-enter p0
56772     :try_start_13
56773     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
56775     move-result-wide v1
56777     add-long/2addr v1, v3
56779     iput-wide v1, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
56781     const/4 v1, 0x0
56783     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDidAppSwitch:Z
56785     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
56787     const/16 v2, 0x15
56789     invoke-virtual {v1, v2}, Landroid/os/Handler;->removeMessages(I)V
56791     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
56793     const/16 v2, 0x15
56795     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
56797     move-result-object v0
56799     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
56801     const-wide/16 v2, 0x1388
56803     invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
56805     monitor-exit p0
56807     return-void
56809     :catchall_35
56810     move-exception v1
56812     monitor-exit p0
56813     :try_end_37
56814     .catchall {:try_start_13 .. :try_end_37} :catchall_35
56816     throw v1
56817 .end method
56819 .method public stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;)I
56820     .registers 11
56822     const/4 v4, 0x1
56824     const-string v5, "stopService"
56826     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
56828     if-eqz p2, :cond_16
56830     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
56832     move-result v5
56834     if-ne v5, v4, :cond_16
56836     new-instance v4, Ljava/lang/IllegalArgumentException;
56838     const-string v5, "File descriptors passed in Intent"
56840     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
56842     throw v4
56844     :cond_16
56845     monitor-enter p0
56847     :try_start_17
56848     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
56850     move-result-object v0
56852     if-eqz p1, :cond_53
56854     if-nez v0, :cond_53
56856     new-instance v4, Ljava/lang/SecurityException;
56858     new-instance v5, Ljava/lang/StringBuilder;
56860     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
56862     const-string v6, "Unable to find app for caller "
56864     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56866     move-result-object v5
56868     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56870     move-result-object v5
56872     const-string v6, " (pid="
56874     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56876     move-result-object v5
56878     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
56880     move-result v6
56882     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
56884     move-result-object v5
56886     const-string v6, ") when stopping service "
56888     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56890     move-result-object v5
56892     invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56894     move-result-object v5
56896     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56898     move-result-object v5
56900     invoke-direct {v4, v5}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
56902     throw v4
56904     :catchall_50
56905     move-exception v4
56907     monitor-exit p0
56908     :try_end_52
56909     .catchall {:try_start_17 .. :try_end_52} :catchall_50
56911     throw v4
56913     :cond_53
56914     if-nez v0, :cond_71
56916     :try_start_55
56917     invoke-static {}, Landroid/os/UserId;->getCallingUserId()I
56919     move-result v5
56921     :goto_59
56922     invoke-direct {p0, p2, p3, v5}, Lcom/android/server/am/ActivityManagerService;->findServiceLocked(Landroid/content/Intent;Ljava/lang/String;I)Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;
56924     move-result-object v3
56926     if-eqz v3, :cond_7c
56928     iget-object v5, v3, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
56930     if-eqz v5, :cond_79
56932     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56933     :try_end_66
56934     .catchall {:try_start_55 .. :try_end_66} :catchall_50
56936     move-result-wide v1
56938     :try_start_67
56939     iget-object v5, v3, Lcom/android/server/am/ActivityManagerService$ServiceLookupResult;->record:Lcom/android/server/am/ServiceRecord;
56941     invoke-direct {p0, v5}, Lcom/android/server/am/ActivityManagerService;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
56942     :try_end_6c
56943     .catchall {:try_start_67 .. :try_end_6c} :catchall_74
56945     :try_start_6c
56946     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56948     monitor-exit p0
56950     :goto_70
56951     return v4
56953     :cond_71
56954     iget v5, v0, Lcom/android/server/am/ProcessRecord;->userId:I
56956     goto :goto_59
56958     :catchall_74
56959     move-exception v4
56961     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56963     throw v4
56965     :cond_79
56966     const/4 v4, -0x1
56968     monitor-exit p0
56970     goto :goto_70
56972     :cond_7c
56973     monitor-exit p0
56974     :try_end_7d
56975     .catchall {:try_start_6c .. :try_end_7d} :catchall_50
56977     const/4 v4, 0x0
56979     goto :goto_70
56980 .end method
56982 .method public stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
56983     .registers 12
56985     const/4 v5, 0x0
56987     monitor-enter p0
56989     :try_start_2
56990     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)Lcom/android/server/am/ServiceRecord;
56992     move-result-object v3
56994     if-eqz v3, :cond_8c
56996     if-ltz p3, :cond_65
56998     const/4 v6, 0x0
57000     invoke-virtual {v3, p3, v6}, Lcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
57002     move-result-object v4
57004     if-eqz v4, :cond_27
57006     :cond_11
57007     iget-object v6, v3, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
57009     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
57011     move-result v6
57013     if-lez v6, :cond_27
57015     iget-object v6, v3, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
57017     const/4 v7, 0x0
57019     invoke-virtual {v6, v7}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
57021     move-result-object v0
57023     check-cast v0, Lcom/android/server/am/ServiceRecord$StartItem;
57025     invoke-virtual {v0}, Lcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
57027     if-ne v0, v4, :cond_11
57029     :cond_27
57030     invoke-virtual {v3}, Lcom/android/server/am/ServiceRecord;->getLastStartId()I
57032     move-result v6
57034     if-eq v6, p3, :cond_2f
57036     monitor-exit p0
57038     :goto_2e
57039     return v5
57041     :cond_2f
57042     iget-object v5, v3, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
57044     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
57046     move-result v5
57048     if-lez v5, :cond_65
57050     const-string v5, "ActivityManager"
57052     new-instance v6, Ljava/lang/StringBuilder;
57054     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
57056     const-string v7, "stopServiceToken startId "
57058     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
57060     move-result-object v6
57062     invoke-virtual {v6, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
57064     move-result-object v6
57066     const-string v7, " is last, but have "
57068     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
57070     move-result-object v6
57072     iget-object v7, v3, Lcom/android/server/am/ServiceRecord;->deliveredStarts:Ljava/util/ArrayList;
57074     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
57076     move-result v7
57078     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
57080     move-result-object v6
57082     const-string v7, " remaining args"
57084     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
57086     move-result-object v6
57088     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
57090     move-result-object v6
57092     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
57094     :cond_65
57095     iget-object v5, v3, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
57097     invoke-virtual {v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
57099     move-result-object v6
57101     monitor-enter v6
57102     :try_end_6c
57103     .catchall {:try_start_2 .. :try_end_6c} :catchall_86
57105     :try_start_6c
57106     iget-object v5, v3, Lcom/android/server/am/ServiceRecord;->stats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
57108     invoke-virtual {v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked()V
57110     const/4 v5, 0x0
57112     iput-boolean v5, v3, Lcom/android/server/am/ServiceRecord;->startRequested:Z
57114     const/4 v5, 0x0
57116     iput-boolean v5, v3, Lcom/android/server/am/ServiceRecord;->callStart:Z
57118     monitor-exit v6
57119     :try_end_78
57120     .catchall {:try_start_6c .. :try_end_78} :catchall_89
57122     :try_start_78
57123     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
57125     move-result-wide v1
57127     const/4 v5, 0x0
57129     invoke-direct {p0, v3, v5}, Lcom/android/server/am/ActivityManagerService;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
57131     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
57133     const/4 v5, 0x1
57135     monitor-exit p0
57137     goto :goto_2e
57139     :catchall_86
57140     move-exception v5
57142     monitor-exit p0
57143     :try_end_88
57144     .catchall {:try_start_78 .. :try_end_88} :catchall_86
57146     throw v5
57148     :catchall_89
57149     move-exception v5
57151     :try_start_8a
57152     monitor-exit v6
57153     :try_end_8b
57154     .catchall {:try_start_8a .. :try_end_8b} :catchall_89
57156     :try_start_8b
57157     throw v5
57159     :cond_8c
57160     monitor-exit p0
57161     :try_end_8d
57162     .catchall {:try_start_8b .. :try_end_8d} :catchall_86
57164     goto :goto_2e
57165 .end method
57167 .method public switchUser(I)Z
57168     .registers 8
57170     const/4 v4, 0x1
57172     const/4 v3, 0x0
57174     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
57176     move-result v1
57178     if-eqz v1, :cond_16
57180     invoke-static {}, Landroid/os/Process;->myUid()I
57182     move-result v5
57184     if-eq v1, v5, :cond_16
57186     const-string v4, "ActivityManager"
57188     const-string v5, "Trying to switch user from unauthorized app"
57190     invoke-static {v4, v5}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
57192     :goto_15
57193     return v3
57195     :cond_16
57196     iget v5, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
57198     if-ne v5, p1, :cond_1c
57200     move v3, v4
57202     goto :goto_15
57204     :cond_1c
57205     monitor-enter p0
57207     :try_start_1d
57208     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mLoggedInUsers:Landroid/util/SparseIntArray;
57210     invoke-virtual {v5, p1}, Landroid/util/SparseIntArray;->indexOfKey(I)I
57212     move-result v5
57214     if-gez v5, :cond_35
57216     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->userExists(I)Z
57218     move-result v5
57220     if-nez v5, :cond_30
57222     monitor-exit p0
57224     goto :goto_15
57226     :catchall_2d
57227     move-exception v3
57229     monitor-exit p0
57230     :try_end_2f
57231     .catchall {:try_start_1d .. :try_end_2f} :catchall_2d
57233     throw v3
57235     :cond_30
57236     :try_start_30
57237     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mLoggedInUsers:Landroid/util/SparseIntArray;
57239     invoke-virtual {v3, p1, p1}, Landroid/util/SparseIntArray;->append(II)V
57241     :cond_35
57242     iput p1, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
57244     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
57246     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->switchUser(I)Z
57248     move-result v2
57250     if-nez v2, :cond_42
57252     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->startHomeActivityLocked(I)Z
57254     :cond_42
57255     monitor-exit p0
57256     :try_end_43
57257     .catchall {:try_start_30 .. :try_end_43} :catchall_2d
57259     new-instance v0, Landroid/content/Intent;
57261     const-string v3, "android.intent.action.USER_SWITCHED"
57263     invoke-direct {v0, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
57265     const-string v3, "android.intent.extra.user_id"
57267     invoke-virtual {v0, v3, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
57269     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
57271     const-string v5, "android.permission.MANAGE_ACCOUNTS"
57273     invoke-virtual {v3, v0, v5}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
57275     move v3, v4
57277     goto :goto_15
57278 .end method
57280 .method public systemReady(Ljava/lang/Runnable;)V
57281     .registers 36
57283     monitor-enter p0
57285     :try_start_1
57286     move-object/from16 v0, p0
57288     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
57290     if-eqz v3, :cond_e
57292     if-eqz p1, :cond_c
57294     invoke-interface/range {p1 .. p1}, Ljava/lang/Runnable;->run()V
57296     :cond_c
57297     monitor-exit p0
57299     :goto_d
57300     return-void
57302     :cond_e
57303     move-object/from16 v0, p0
57305     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
57307     if-nez v3, :cond_137
57309     move-object/from16 v0, p0
57311     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
57313     if-eqz v3, :cond_1f
57315     monitor-exit p0
57317     goto :goto_d
57319     :catchall_1c
57320     move-exception v3
57322     monitor-exit p0
57323     :try_end_1e
57324     .catchall {:try_start_1 .. :try_end_1e} :catchall_1c
57326     throw v3
57328     :cond_1f
57329     :try_start_1f
57330     new-instance v6, Landroid/content/Intent;
57332     const-string v3, "android.intent.action.PRE_BOOT_COMPLETED"
57334     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
57335     :try_end_26
57336     .catchall {:try_start_1f .. :try_end_26} :catchall_1c
57338     const/16 v33, 0x0
57340     :try_start_28
57341     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
57343     move-result-object v3
57345     const/4 v4, 0x0
57347     const/4 v5, 0x0
57349     const/4 v7, 0x0
57351     invoke-interface {v3, v6, v4, v5, v7}, Landroid/content/pm/IPackageManager;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
57352     :try_end_32
57353     .catchall {:try_start_28 .. :try_end_32} :catchall_1c
57354     .catch Landroid/os/RemoteException; {:try_start_28 .. :try_end_32} :catch_308
57356     move-result-object v33
57358     :goto_33
57359     if-eqz v33, :cond_129
57361     :try_start_35
57362     invoke-interface/range {v33 .. v33}, Ljava/util/List;->size()I
57364     move-result v3
57366     add-int/lit8 v25, v3, -0x1
57368     :goto_3b
57369     if-ltz v25, :cond_5b
57371     move-object/from16 v0, v33
57373     move/from16 v1, v25
57375     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
57377     move-result-object v3
57379     check-cast v3, Landroid/content/pm/ResolveInfo;
57381     iget-object v3, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
57383     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
57385     iget v3, v3, Landroid/content/pm/ApplicationInfo;->flags:I
57387     and-int/lit8 v3, v3, 0x1
57389     if-nez v3, :cond_58
57391     move-object/from16 v0, v33
57393     move/from16 v1, v25
57395     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
57397     :cond_58
57398     add-int/lit8 v25, v25, -0x1
57400     goto :goto_3b
57402     :cond_5b
57403     const/high16 v3, 0x400
57405     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
57407     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->readLastDonePreBootReceivers()Ljava/util/ArrayList;
57409     move-result-object v27
57411     new-instance v23, Ljava/util/ArrayList;
57413     invoke-direct/range {v23 .. v23}, Ljava/util/ArrayList;-><init>()V
57415     const/16 v25, 0x0
57417     :goto_6b
57418     invoke-interface/range {v33 .. v33}, Ljava/util/List;->size()I
57420     move-result v3
57422     move/from16 v0, v25
57424     if-ge v0, v3, :cond_a6
57426     move-object/from16 v0, v33
57428     move/from16 v1, v25
57430     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
57432     move-result-object v3
57434     check-cast v3, Landroid/content/pm/ResolveInfo;
57436     iget-object v0, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
57438     move-object/from16 v19, v0
57440     new-instance v22, Landroid/content/ComponentName;
57442     move-object/from16 v0, v19
57444     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
57446     move-object/from16 v0, v19
57448     iget-object v4, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
57450     move-object/from16 v0, v22
57452     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
57454     move-object/from16 v0, v27
57456     move-object/from16 v1, v22
57458     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
57460     move-result v3
57462     if-eqz v3, :cond_a3
57464     move-object/from16 v0, v33
57466     move/from16 v1, v25
57468     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
57470     add-int/lit8 v25, v25, -0x1
57472     :cond_a3
57473     add-int/lit8 v25, v25, 0x1
57475     goto :goto_6b
57477     :cond_a6
57478     const/16 v25, 0x0
57480     :goto_a8
57481     invoke-interface/range {v33 .. v33}, Ljava/util/List;->size()I
57483     move-result v3
57485     move/from16 v0, v25
57487     if-ge v0, v3, :cond_129
57489     move-object/from16 v0, v33
57491     move/from16 v1, v25
57493     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
57495     move-result-object v3
57497     check-cast v3, Landroid/content/pm/ResolveInfo;
57499     iget-object v0, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
57501     move-object/from16 v19, v0
57503     new-instance v22, Landroid/content/ComponentName;
57505     move-object/from16 v0, v19
57507     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
57509     move-object/from16 v0, v19
57511     iget-object v4, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
57513     move-object/from16 v0, v22
57515     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
57517     move-object/from16 v0, v23
57519     move-object/from16 v1, v22
57521     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
57523     move-object/from16 v0, v22
57525     invoke-virtual {v6, v0}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
57527     const/4 v8, 0x0
57529     invoke-interface/range {v33 .. v33}, Ljava/util/List;->size()I
57531     move-result v3
57533     add-int/lit8 v3, v3, -0x1
57535     move/from16 v0, v25
57537     if-ne v0, v3, :cond_ef
57539     new-instance v8, Lcom/android/server/am/ActivityManagerService$10;
57541     move-object/from16 v0, p0
57543     move-object/from16 v1, v23
57545     move-object/from16 v2, p1
57547     invoke-direct {v8, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService$10;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/ArrayList;Ljava/lang/Runnable;)V
57549     :cond_ef
57550     const-string v3, "ActivityManager"
57552     new-instance v4, Ljava/lang/StringBuilder;
57554     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
57556     const-string v5, "Sending system update to: "
57558     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
57560     move-result-object v4
57562     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
57564     move-result-object v5
57566     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
57568     move-result-object v4
57570     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
57572     move-result-object v4
57574     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
57576     const/4 v4, 0x0
57578     const/4 v5, 0x0
57580     const/4 v7, 0x0
57582     const/4 v9, 0x0
57584     const/4 v10, 0x0
57586     const/4 v11, 0x0
57588     const/4 v12, 0x0
57590     const/4 v13, 0x1
57592     const/4 v14, 0x0
57594     sget v15, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
57596     const/16 v16, 0x3e8
57598     const/16 v17, 0x0
57600     move-object/from16 v3, p0
57602     invoke-direct/range {v3 .. v17}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
57604     if-eqz v8, :cond_126
57606     const/4 v3, 0x1
57608     move-object/from16 v0, p0
57610     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
57612     :cond_126
57613     add-int/lit8 v25, v25, 0x1
57615     goto :goto_a8
57617     :cond_129
57618     move-object/from16 v0, p0
57620     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
57622     if-eqz v3, :cond_132
57624     monitor-exit p0
57626     goto/16 :goto_d
57628     :cond_132
57629     const/4 v3, 0x1
57631     move-object/from16 v0, p0
57633     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
57635     :cond_137
57636     const/4 v3, 0x1
57638     move-object/from16 v0, p0
57640     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
57642     move-object/from16 v0, p0
57644     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
57646     if-nez v3, :cond_145
57648     monitor-exit p0
57650     goto/16 :goto_d
57652     :cond_145
57653     monitor-exit p0
57654     :try_end_146
57655     .catchall {:try_start_35 .. :try_end_146} :catchall_1c
57657     const/16 v30, 0x0
57659     move-object/from16 v0, p0
57661     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
57663     monitor-enter v4
57665     :try_start_14d
57666     move-object/from16 v0, p0
57668     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
57670     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
57671     :try_end_154
57672     .catchall {:try_start_14d .. :try_end_154} :catchall_1c4
57674     move-result v3
57676     add-int/lit8 v25, v3, -0x1
57678     move-object/from16 v31, v30
57680     :goto_159
57681     if-ltz v25, :cond_186
57683     :try_start_15b
57684     move-object/from16 v0, p0
57686     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
57688     move/from16 v0, v25
57690     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
57692     move-result-object v29
57694     check-cast v29, Lcom/android/server/am/ProcessRecord;
57696     move-object/from16 v0, v29
57698     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
57700     move-object/from16 v0, p0
57702     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
57704     move-result v3
57706     if-nez v3, :cond_30f
57708     if-nez v31, :cond_30b
57710     new-instance v30, Ljava/util/ArrayList;
57712     invoke-direct/range {v30 .. v30}, Ljava/util/ArrayList;-><init>()V
57713     :try_end_17a
57714     .catchall {:try_start_15b .. :try_end_17a} :catchall_303
57716     :goto_17a
57717     :try_start_17a
57718     move-object/from16 v0, v30
57720     move-object/from16 v1, v29
57722     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
57723     :try_end_181
57724     .catchall {:try_start_17a .. :try_end_181} :catchall_1c4
57726     :goto_181
57727     add-int/lit8 v25, v25, -0x1
57729     move-object/from16 v31, v30
57731     goto :goto_159
57733     :cond_186
57734     :try_start_186
57735     monitor-exit v4
57736     :try_end_187
57737     .catchall {:try_start_186 .. :try_end_187} :catchall_303
57739     monitor-enter p0
57741     if-eqz v31, :cond_1c7
57743     :try_start_18a
57744     invoke-virtual/range {v31 .. v31}, Ljava/util/ArrayList;->size()I
57746     move-result v3
57748     add-int/lit8 v25, v3, -0x1
57750     :goto_190
57751     if-ltz v25, :cond_1c7
57753     move-object/from16 v0, v31
57755     move/from16 v1, v25
57757     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
57759     move-result-object v29
57761     check-cast v29, Lcom/android/server/am/ProcessRecord;
57763     const-string v3, "ActivityManager"
57765     new-instance v4, Ljava/lang/StringBuilder;
57767     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
57769     const-string v5, "Removing system update proc: "
57771     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
57773     move-result-object v4
57775     move-object/from16 v0, v29
57777     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
57779     move-result-object v4
57781     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
57783     move-result-object v4
57785     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
57787     const/4 v3, 0x1
57789     const/4 v4, 0x0
57791     const-string v5, "system update done"
57793     move-object/from16 v0, p0
57795     move-object/from16 v1, v29
57797     invoke-direct {v0, v1, v3, v4, v5}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
57798     :try_end_1c1
57799     .catchall {:try_start_18a .. :try_end_1c1} :catchall_2a8
57801     add-int/lit8 v25, v25, -0x1
57803     goto :goto_190
57805     :catchall_1c4
57806     move-exception v3
57808     :goto_1c5
57809     :try_start_1c5
57810     monitor-exit v4
57811     :try_end_1c6
57812     .catchall {:try_start_1c5 .. :try_end_1c6} :catchall_1c4
57814     throw v3
57816     :cond_1c7
57817     const/4 v3, 0x1
57819     :try_start_1c8
57820     move-object/from16 v0, p0
57822     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
57824     monitor-exit p0
57825     :try_end_1cd
57826     .catchall {:try_start_1c8 .. :try_end_1cd} :catchall_2a8
57828     const-string v3, "ActivityManager"
57830     const-string v4, "System now ready"
57832     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
57834     const/16 v3, 0xbe0
57836     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
57838     move-result-wide v4
57840     invoke-static {v3, v4, v5}, Landroid/util/EventLog;->writeEvent(IJ)I
57842     monitor-enter p0
57844     :try_start_1de
57845     move-object/from16 v0, p0
57847     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
57849     const/4 v4, 0x1
57851     if-ne v3, v4, :cond_25c
57853     move-object/from16 v0, p0
57855     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
57857     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
57859     move-result-object v3
57861     new-instance v4, Landroid/content/Intent;
57863     const-string v5, "android.intent.action.FACTORY_TEST"
57865     invoke-direct {v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
57867     const/16 v5, 0x400
57869     invoke-virtual {v3, v4, v5}, Landroid/content/pm/PackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
57871     move-result-object v32
57873     const/16 v24, 0x0
57875     if-eqz v32, :cond_2bc
57877     move-object/from16 v0, v32
57879     iget-object v0, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
57881     move-object/from16 v19, v0
57883     move-object/from16 v0, v19
57885     iget-object v0, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
57887     move-object/from16 v20, v0
57889     move-object/from16 v0, v20
57891     iget v3, v0, Landroid/content/pm/ApplicationInfo;->flags:I
57893     and-int/lit8 v3, v3, 0x1
57895     if-eqz v3, :cond_2ab
57897     const-string v3, "android.intent.action.FACTORY_TEST"
57899     move-object/from16 v0, p0
57901     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
57903     const/4 v3, 0x0
57905     move-object/from16 v0, p0
57907     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
57909     new-instance v3, Landroid/content/ComponentName;
57911     move-object/from16 v0, v20
57913     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
57915     move-object/from16 v0, v19
57917     iget-object v5, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
57919     invoke-direct {v3, v4, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
57921     move-object/from16 v0, p0
57923     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
57925     :goto_22e
57926     if-eqz v24, :cond_25c
57928     const/4 v3, 0x0
57930     move-object/from16 v0, p0
57932     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
57934     const/4 v3, 0x0
57936     move-object/from16 v0, p0
57938     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
57940     const/4 v3, 0x0
57942     move-object/from16 v0, p0
57944     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
57946     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
57948     move-result-object v28
57950     const/4 v3, 0x3
57952     move-object/from16 v0, v28
57954     iput v3, v0, Landroid/os/Message;->what:I
57956     invoke-virtual/range {v28 .. v28}, Landroid/os/Message;->getData()Landroid/os/Bundle;
57958     move-result-object v3
57960     const-string v4, "msg"
57962     move-object/from16 v0, v24
57964     invoke-virtual {v3, v4, v0}, Landroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
57966     move-object/from16 v0, p0
57968     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
57970     move-object/from16 v0, v28
57972     invoke-virtual {v3, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
57974     :cond_25c
57975     monitor-exit p0
57976     :try_end_25d
57977     .catchall {:try_start_1de .. :try_end_25d} :catchall_2cd
57979     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->retrieveSettings()V
57981     if-eqz p1, :cond_265
57983     invoke-interface/range {p1 .. p1}, Ljava/lang/Runnable;->run()V
57985     :cond_265
57986     monitor-enter p0
57988     :try_start_266
57989     move-object/from16 v0, p0
57991     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
57992     :try_end_26a
57993     .catchall {:try_start_266 .. :try_end_26a} :catchall_2fe
57995     const/4 v4, 0x1
57997     if-eq v3, v4, :cond_2d1
57999     :try_start_26d
58000     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
58002     move-result-object v3
58004     const/16 v4, 0x400
58006     invoke-interface {v3, v4}, Landroid/content/pm/IPackageManager;->getPersistentApplications(I)Ljava/util/List;
58008     move-result-object v21
58010     if-eqz v21, :cond_2d1
58012     invoke-interface/range {v21 .. v21}, Ljava/util/List;->size()I
58014     move-result v18
58016     const/16 v25, 0x0
58018     :goto_27f
58019     move/from16 v0, v25
58021     move/from16 v1, v18
58023     if-ge v0, v1, :cond_2d1
58025     move-object/from16 v0, v21
58027     move/from16 v1, v25
58029     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
58031     move-result-object v26
58033     check-cast v26, Landroid/content/pm/ApplicationInfo;
58035     if-eqz v26, :cond_2a5
58037     move-object/from16 v0, v26
58039     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
58041     const-string v4, "android"
58043     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
58045     move-result v3
58047     if-nez v3, :cond_2a5
58049     const/4 v3, 0x0
58051     move-object/from16 v0, p0
58053     move-object/from16 v1, v26
58055     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
58056     :try_end_2a5
58057     .catchall {:try_start_26d .. :try_end_2a5} :catchall_2fe
58058     .catch Landroid/os/RemoteException; {:try_start_26d .. :try_end_2a5} :catch_2d0
58060     :cond_2a5
58061     add-int/lit8 v25, v25, 0x1
58063     goto :goto_27f
58065     :catchall_2a8
58066     move-exception v3
58068     :try_start_2a9
58069     monitor-exit p0
58070     :try_end_2aa
58071     .catchall {:try_start_2a9 .. :try_end_2aa} :catchall_2a8
58073     throw v3
58075     :cond_2ab
58076     :try_start_2ab
58077     move-object/from16 v0, p0
58079     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
58081     invoke-virtual {v3}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
58083     move-result-object v3
58085     const v4, 0x104035d
58087     invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
58089     move-result-object v24
58091     goto/16 :goto_22e
58093     :cond_2bc
58094     move-object/from16 v0, p0
58096     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
58098     invoke-virtual {v3}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
58100     move-result-object v3
58102     const v4, 0x104035e
58104     invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
58106     move-result-object v24
58108     goto/16 :goto_22e
58110     :catchall_2cd
58111     move-exception v3
58113     monitor-exit p0
58114     :try_end_2cf
58115     .catchall {:try_start_2ab .. :try_end_2cf} :catchall_2cd
58117     throw v3
58119     :catch_2d0
58120     move-exception v3
58122     :cond_2d1
58123     const/4 v3, 0x1
58125     :try_start_2d2
58126     move-object/from16 v0, p0
58128     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
58129     :try_end_2d6
58130     .catchall {:try_start_2d2 .. :try_end_2d6} :catchall_2fe
58132     :try_start_2d6
58133     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
58135     move-result-object v3
58137     invoke-interface {v3}, Landroid/content/pm/IPackageManager;->hasSystemUidErrors()Z
58139     move-result v3
58141     if-eqz v3, :cond_2f3
58143     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
58145     move-result-object v28
58147     const/16 v3, 0xe
58149     move-object/from16 v0, v28
58151     iput v3, v0, Landroid/os/Message;->what:I
58153     move-object/from16 v0, p0
58155     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
58157     move-object/from16 v0, v28
58159     invoke-virtual {v3, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
58160     :try_end_2f3
58161     .catchall {:try_start_2d6 .. :try_end_2f3} :catchall_2fe
58162     .catch Landroid/os/RemoteException; {:try_start_2d6 .. :try_end_2f3} :catch_301
58164     :cond_2f3
58165     :goto_2f3
58166     :try_start_2f3
58167     move-object/from16 v0, p0
58169     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
58171     const/4 v4, 0x0
58173     invoke-virtual {v3, v4}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
58175     monitor-exit p0
58177     goto/16 :goto_d
58179     :catchall_2fe
58180     move-exception v3
58182     monitor-exit p0
58183     :try_end_300
58184     .catchall {:try_start_2f3 .. :try_end_300} :catchall_2fe
58186     throw v3
58188     :catch_301
58189     move-exception v3
58191     goto :goto_2f3
58193     :catchall_303
58194     move-exception v3
58196     move-object/from16 v30, v31
58198     goto/16 :goto_1c5
58200     :catch_308
58201     move-exception v3
58203     goto/16 :goto_33
58205     :cond_30b
58206     move-object/from16 v30, v31
58208     goto/16 :goto_17a
58210     :cond_30f
58211     move-object/from16 v30, v31
58213     goto/16 :goto_181
58214 .end method
58216 .method public targetTaskAffinityMatchesActivity(Landroid/os/IBinder;Ljava/lang/String;)Z
58217     .registers 5
58219     invoke-static {p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
58221     move-result-object v0
58223     if-eqz v0, :cond_18
58225     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
58227     iget-object v1, v1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
58229     if-eqz v1, :cond_18
58231     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
58233     iget-object v1, v1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
58235     invoke-virtual {v1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
58237     move-result v1
58239     if-eqz v1, :cond_18
58241     const/4 v1, 0x1
58243     :goto_17
58244     return v1
58246     :cond_18
58247     const/4 v1, 0x0
58249     goto :goto_17
58250 .end method
58252 .method public testIsSystemReady()Z
58253     .registers 2
58255     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
58257     return v0
58258 .end method
58260 .method final trimApplications()V
58261     .registers 7
58263     monitor-enter p0
58265     :try_start_1
58266     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
58268     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
58270     move-result v2
58272     add-int/lit8 v1, v2, -0x1
58274     :goto_9
58275     if-ltz v1, :cond_b5
58277     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
58279     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
58281     move-result-object v0
58283     check-cast v0, Lcom/android/server/am/ProcessRecord;
58285     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
58287     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
58289     move-result v2
58291     if-nez v2, :cond_a7
58293     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->curReceiver:Lcom/android/server/am/BroadcastRecord;
58295     if-nez v2, :cond_a7
58297     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
58299     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
58301     move-result v2
58303     if-nez v2, :cond_a7
58305     const-string v3, "ActivityManager"
58307     new-instance v2, Ljava/lang/StringBuilder;
58309     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
58311     const-string v4, "Exiting empty application process "
58313     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58315     move-result-object v2
58317     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58319     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58321     move-result-object v2
58323     const-string v4, " ("
58325     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58327     move-result-object v4
58329     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58331     if-eqz v2, :cond_ab
58333     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58335     invoke-interface {v2}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
58337     move-result-object v2
58339     :goto_4a
58340     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
58342     move-result-object v2
58344     const-string v4, ")\n"
58346     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58348     move-result-object v2
58350     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58352     move-result-object v2
58354     invoke-static {v3, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
58356     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
58358     if-lez v2, :cond_ad
58360     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
58362     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
58364     if-eq v2, v3, :cond_ad
58366     const/16 v2, 0x7547
58368     const/4 v3, 0x4
58370     new-array v3, v3, [Ljava/lang/Object;
58372     const/4 v4, 0x0
58374     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
58376     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58378     move-result-object v5
58380     aput-object v5, v3, v4
58382     const/4 v4, 0x1
58384     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58386     aput-object v5, v3, v4
58388     const/4 v4, 0x2
58390     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
58392     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58394     move-result-object v5
58396     aput-object v5, v3, v4
58398     const/4 v4, 0x3
58400     const-string v5, "empty"
58402     aput-object v5, v3, v4
58404     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
58406     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
58408     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
58410     :goto_8e
58411     const/4 v2, 0x0
58413     const/4 v3, 0x1
58415     const/4 v4, -0x1
58417     invoke-direct {p0, v0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
58419     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
58421     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
58423     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
58425     if-eqz v2, :cond_a7
58427     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
58429     if-eqz v2, :cond_a7
58431     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
58433     const/4 v3, 0x0
58435     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
58436     :try_end_a7
58437     .catchall {:try_start_1 .. :try_end_a7} :catchall_ba
58439     :cond_a7
58440     add-int/lit8 v1, v1, -0x1
58442     goto/16 :goto_9
58444     :cond_ab
58445     const/4 v2, 0x0
58447     goto :goto_4a
58449     :cond_ad
58450     :try_start_ad
58451     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58453     invoke-interface {v2}, Landroid/app/IApplicationThread;->scheduleExit()V
58454     :try_end_b2
58455     .catchall {:try_start_ad .. :try_end_b2} :catchall_ba
58456     .catch Ljava/lang/Exception; {:try_start_ad .. :try_end_b2} :catch_b3
58458     goto :goto_8e
58460     :catch_b3
58461     move-exception v2
58463     goto :goto_8e
58465     :cond_b5
58466     :try_start_b5
58467     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
58469     monitor-exit p0
58471     return-void
58473     :catchall_ba
58474     move-exception v2
58476     monitor-exit p0
58477     :try_end_bc
58478     .catchall {:try_start_b5 .. :try_end_bc} :catchall_ba
58480     throw v2
58481 .end method
58483 .method public unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V
58484     .registers 7
58486     if-nez p1, :cond_a
58488     const-string v2, "ActivityManager"
58490     const-string v3, "unbind backup agent for null app"
58492     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
58494     :goto_9
58495     return-void
58497     :cond_a
58498     monitor-enter p0
58500     :try_start_b
58501     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
58503     if-nez v2, :cond_1b
58505     const-string v2, "ActivityManager"
58507     const-string v3, "Unbinding backup agent with no active backup"
58509     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
58511     monitor-exit p0
58513     goto :goto_9
58515     :catchall_18
58516     move-exception v2
58518     monitor-exit p0
58519     :try_end_1a
58520     .catchall {:try_start_b .. :try_end_1a} :catchall_18
58522     throw v2
58524     :cond_1b
58525     :try_start_1b
58526     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
58528     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
58530     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
58532     move-result v2
58534     if-nez v2, :cond_45
58536     const-string v2, "ActivityManager"
58538     new-instance v3, Ljava/lang/StringBuilder;
58540     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
58542     const-string v4, "Unbind of "
58544     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58546     move-result-object v3
58548     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
58550     move-result-object v3
58552     const-string v4, " but is not the current backup target"
58554     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58556     move-result-object v3
58558     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58560     move-result-object v3
58562     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
58564     monitor-exit p0
58566     goto :goto_9
58568     :cond_45
58569     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
58571     iget-object v1, v2, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
58573     const/4 v2, 0x0
58575     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
58577     const/4 v2, 0x0
58579     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
58581     invoke-direct {p0, v1}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
58583     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58584     :try_end_54
58585     .catchall {:try_start_1b .. :try_end_54} :catchall_18
58587     if-eqz v2, :cond_5f
58589     :try_start_56
58590     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58592     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
58594     move-result-object v3
58596     invoke-interface {v2, p1, v3}, Landroid/app/IApplicationThread;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)V
58597     :try_end_5f
58598     .catchall {:try_start_56 .. :try_end_5f} :catchall_18
58599     .catch Ljava/lang/Exception; {:try_start_56 .. :try_end_5f} :catch_61
58601     :cond_5f
58602     :goto_5f
58603     :try_start_5f
58604     monitor-exit p0
58606     goto :goto_9
58608     :catch_61
58609     move-exception v0
58611     const-string v2, "ActivityManager"
58613     const-string v3, "Exception when unbinding backup agent:"
58615     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
58617     invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
58618     :try_end_6c
58619     .catchall {:try_start_5f .. :try_end_6c} :catchall_18
58621     goto :goto_5f
58622 .end method
58624 .method public unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
58625     .registers 13
58627     const/4 v8, 0x1
58629     if-eqz p2, :cond_11
58631     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
58633     move-result v7
58635     if-ne v7, v8, :cond_11
58637     new-instance v7, Ljava/lang/IllegalArgumentException;
58639     const-string v8, "File descriptors passed in Intent"
58641     invoke-direct {v7, v8}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
58643     throw v7
58645     :cond_11
58646     monitor-enter p0
58648     :try_start_12
58649     instance-of v7, p1, Lcom/android/server/am/ServiceRecord;
58651     if-nez v7, :cond_21
58653     new-instance v7, Ljava/lang/IllegalArgumentException;
58655     const-string v8, "Invalid service token"
58657     invoke-direct {v7, v8}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
58659     throw v7
58661     :catchall_1e
58662     move-exception v7
58664     monitor-exit p0
58665     :try_end_20
58666     .catchall {:try_start_12 .. :try_end_20} :catchall_1e
58668     throw v7
58670     :cond_21
58671     :try_start_21
58672     move-object v0, p1
58674     check-cast v0, Lcom/android/server/am/ServiceRecord;
58676     move-object v6, v0
58678     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
58680     move-result-wide v4
58682     if-eqz v6, :cond_54
58684     new-instance v2, Landroid/content/Intent$FilterComparison;
58686     invoke-direct {v2, p2}, Landroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
58688     iget-object v7, v6, Lcom/android/server/am/ServiceRecord;->bindings:Ljava/util/HashMap;
58690     invoke-virtual {v7, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
58692     move-result-object v1
58694     check-cast v1, Lcom/android/server/am/IntentBindRecord;
58696     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mStoppingServices:Ljava/util/ArrayList;
58698     invoke-virtual {v7, v6}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
58700     move-result v3
58702     if-eqz v1, :cond_4e
58704     iget-object v7, v1, Lcom/android/server/am/IntentBindRecord;->apps:Ljava/util/HashMap;
58706     invoke-virtual {v7}, Ljava/util/HashMap;->size()I
58708     move-result v7
58710     if-lez v7, :cond_56
58712     if-nez v3, :cond_56
58714     const/4 v7, 0x1
58716     invoke-direct {p0, v6, v1, v7}, Lcom/android/server/am/ActivityManagerService;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Z)Z
58718     :cond_4e
58719     :goto_4e
58720     invoke-virtual {p0, v6, v3}, Lcom/android/server/am/ActivityManagerService;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;Z)V
58722     invoke-static {v4, v5}, Landroid/os/Binder;->restoreCallingIdentity(J)V
58724     :cond_54
58725     monitor-exit p0
58727     return-void
58729     :cond_56
58730     const/4 v7, 0x1
58732     iput-boolean v7, v1, Lcom/android/server/am/IntentBindRecord;->doRebind:Z
58733     :try_end_59
58734     .catchall {:try_start_21 .. :try_end_59} :catchall_1e
58736     goto :goto_4e
58737 .end method
58739 .method public unbindService(Landroid/app/IServiceConnection;)Z
58740     .registers 11
58742     const/4 v5, 0x0
58744     monitor-enter p0
58746     :try_start_2
58747     invoke-interface {p1}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
58749     move-result-object v0
58751     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mServiceConnections:Ljava/util/HashMap;
58753     invoke-virtual {v6, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
58755     move-result-object v1
58757     check-cast v1, Ljava/util/ArrayList;
58759     if-nez v1, :cond_2e
58761     const-string v6, "ActivityManager"
58763     new-instance v7, Ljava/lang/StringBuilder;
58765     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
58767     const-string v8, "Unbind failed: could not find connection for "
58769     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58771     move-result-object v7
58773     invoke-interface {p1}, Landroid/app/IServiceConnection;->asBinder()Landroid/os/IBinder;
58775     move-result-object v8
58777     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
58779     move-result-object v7
58781     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58783     move-result-object v7
58785     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
58787     monitor-exit p0
58789     :goto_2d
58790     return v5
58792     :cond_2e
58793     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
58795     move-result-wide v2
58797     :cond_32
58798     :goto_32
58799     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
58801     move-result v5
58803     if-lez v5, :cond_59
58805     const/4 v5, 0x0
58807     invoke-virtual {v1, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
58809     move-result-object v4
58811     check-cast v4, Lcom/android/server/am/ConnectionRecord;
58813     const/4 v5, 0x0
58815     const/4 v6, 0x0
58817     invoke-virtual {p0, v4, v5, v6}, Lcom/android/server/am/ActivityManagerService;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V
58819     iget-object v5, v4, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
58821     iget-object v5, v5, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
58823     iget-object v5, v5, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
58825     if-eqz v5, :cond_32
58827     iget-object v5, v4, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
58829     iget-object v5, v5, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
58831     iget-object v5, v5, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
58833     invoke-direct {p0, v5}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
58835     goto :goto_32
58837     :catchall_56
58838     move-exception v5
58840     monitor-exit p0
58841     :try_end_58
58842     .catchall {:try_start_2 .. :try_end_58} :catchall_56
58844     throw v5
58846     :cond_59
58847     :try_start_59
58848     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
58850     monitor-exit p0
58851     :try_end_5d
58852     .catchall {:try_start_59 .. :try_end_5d} :catchall_56
58854     const/4 v5, 0x1
58856     goto :goto_2d
58857 .end method
58859 .method public final unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V
58860     .registers 10
58862     if-eqz p2, :cond_11
58864     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
58866     move-result v4
58868     const/4 v5, 0x1
58870     if-ne v4, v5, :cond_11
58872     new-instance v4, Ljava/lang/IllegalArgumentException;
58874     const-string v5, "File descriptors passed in Intent"
58876     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
58878     throw v4
58880     :cond_11
58881     monitor-enter p0
58883     :try_start_12
58884     const-string v4, "android.permission.BROADCAST_STICKY"
58886     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
58888     move-result v4
58890     if-eqz v4, :cond_59
58892     new-instance v4, Ljava/lang/StringBuilder;
58894     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
58896     const-string v5, "Permission Denial: unbroadcastIntent() from pid="
58898     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58900     move-result-object v4
58902     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
58904     move-result v5
58906     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58908     move-result-object v4
58910     const-string v5, ", uid="
58912     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58914     move-result-object v4
58916     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
58918     move-result v5
58920     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58922     move-result-object v4
58924     const-string v5, " requires "
58926     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58928     move-result-object v4
58930     const-string v5, "android.permission.BROADCAST_STICKY"
58932     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58934     move-result-object v4
58936     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58938     move-result-object v3
58940     const-string v4, "ActivityManager"
58942     invoke-static {v4, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
58944     new-instance v4, Ljava/lang/SecurityException;
58946     invoke-direct {v4, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
58948     throw v4
58950     :catchall_56
58951     move-exception v4
58953     monitor-exit p0
58954     :try_end_58
58955     .catchall {:try_start_12 .. :try_end_58} :catchall_56
58957     throw v4
58959     :cond_59
58960     :try_start_59
58961     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Ljava/util/HashMap;
58963     invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
58965     move-result-object v5
58967     invoke-virtual {v4, v5}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
58969     move-result-object v2
58971     check-cast v2, Ljava/util/ArrayList;
58973     if-eqz v2, :cond_7d
58975     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
58977     move-result v0
58979     const/4 v1, 0x0
58981     :goto_6c
58982     if-ge v1, v0, :cond_7d
58984     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
58986     move-result-object v4
58988     check-cast v4, Landroid/content/Intent;
58990     invoke-virtual {p2, v4}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
58992     move-result v4
58994     if-eqz v4, :cond_7f
58996     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
58998     :cond_7d
58999     monitor-exit p0
59000     :try_end_7e
59001     .catchall {:try_start_59 .. :try_end_7e} :catchall_56
59003     return-void
59005     :cond_7f
59006     add-int/lit8 v1, v1, 0x1
59008     goto :goto_6c
59009 .end method
59011 .method public unhandledBack()V
59012     .registers 10
59014     const-string v0, "android.permission.FORCE_BACK"
59016     const-string v1, "unhandledBack()"
59018     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
59020     monitor-enter p0
59022     :try_start_8
59023     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59025     iget-object v0, v0, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
59027     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
59029     move-result v6
59031     const/4 v0, 0x1
59033     if-le v6, v0, :cond_31
59035     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
59037     move-result-wide v7
59039     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59041     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59043     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
59045     add-int/lit8 v2, v6, -0x1
59047     invoke-virtual {v1, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
59049     move-result-object v1
59051     check-cast v1, Lcom/android/server/am/ActivityRecord;
59053     add-int/lit8 v2, v6, -0x1
59055     const/4 v3, 0x0
59057     const/4 v4, 0x0
59059     const-string v5, "unhandled-back"
59061     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;)Z
59063     invoke-static {v7, v8}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59065     :cond_31
59066     monitor-exit p0
59068     return-void
59070     :catchall_33
59071     move-exception v0
59073     monitor-exit p0
59074     :try_end_35
59075     .catchall {:try_start_8 .. :try_end_35} :catchall_33
59077     throw v0
59078 .end method
59080 .method public unregisterProcessObserver(Landroid/app/IProcessObserver;)V
59081     .registers 3
59083     monitor-enter p0
59085     :try_start_1
59086     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
59088     invoke-virtual {v0, p1}, Landroid/os/RemoteCallbackList;->unregister(Landroid/os/IInterface;)Z
59090     monitor-exit p0
59092     return-void
59094     :catchall_8
59095     move-exception v0
59097     monitor-exit p0
59098     :try_end_a
59099     .catchall {:try_start_1 .. :try_end_a} :catchall_8
59101     throw v0
59102 .end method
59104 .method public unregisterReceiver(Landroid/content/IIntentReceiver;)V
59105     .registers 15
59107     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
59109     move-result-wide v9
59111     const/4 v8, 0x0
59113     :try_start_5
59114     monitor-enter p0
59115     :try_end_6
59116     .catchall {:try_start_5 .. :try_end_6} :catchall_61
59118     :try_start_6
59119     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
59121     invoke-interface {p1}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
59123     move-result-object v1
59125     invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
59127     move-result-object v12
59129     check-cast v12, Lcom/android/server/am/ReceiverList;
59131     if-eqz v12, :cond_54
59133     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->curBroadcast:Lcom/android/server/am/BroadcastRecord;
59135     if-eqz v0, :cond_35
59137     iget-object v11, v12, Lcom/android/server/am/ReceiverList;->curBroadcast:Lcom/android/server/am/BroadcastRecord;
59139     invoke-interface {p1}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
59141     move-result-object v1
59143     iget v2, v11, Lcom/android/server/am/BroadcastRecord;->resultCode:I
59145     iget-object v3, v11, Lcom/android/server/am/BroadcastRecord;->resultData:Ljava/lang/String;
59147     iget-object v4, v11, Lcom/android/server/am/BroadcastRecord;->resultExtras:Landroid/os/Bundle;
59149     iget-boolean v5, v11, Lcom/android/server/am/BroadcastRecord;->resultAbort:Z
59151     const/4 v6, 0x1
59153     move-object v0, p0
59155     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->finishReceiverLocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
59157     move-result v7
59159     if-eqz v7, :cond_35
59161     const/4 v8, 0x1
59163     iget-object v0, v11, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
59165     const/4 v1, 0x0
59167     invoke-virtual {v0, v1}, Lcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
59169     :cond_35
59170     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
59172     if-eqz v0, :cond_40
59174     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
59176     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
59178     invoke-virtual {v0, v12}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
59180     :cond_40
59181     invoke-virtual {p0, v12}, Lcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
59183     iget-boolean v0, v12, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
59185     if-eqz v0, :cond_54
59187     const/4 v0, 0x0
59189     iput-boolean v0, v12, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
59191     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->receiver:Landroid/content/IIntentReceiver;
59193     invoke-interface {v0}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
59195     move-result-object v0
59197     const/4 v1, 0x0
59199     invoke-interface {v0, v12, v1}, Landroid/os/IBinder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
59201     :cond_54
59202     monitor-exit p0
59203     :try_end_55
59204     .catchall {:try_start_6 .. :try_end_55} :catchall_5e
59206     if-eqz v8, :cond_5a
59208     :try_start_57
59209     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
59210     :try_end_5a
59211     .catchall {:try_start_57 .. :try_end_5a} :catchall_61
59213     :cond_5a
59214     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59216     return-void
59218     :catchall_5e
59219     move-exception v0
59221     :try_start_5f
59222     monitor-exit p0
59223     :try_end_60
59224     .catchall {:try_start_5f .. :try_end_60} :catchall_5e
59226     :try_start_60
59227     throw v0
59228     :try_end_61
59229     .catchall {:try_start_60 .. :try_end_61} :catchall_61
59231     :catchall_61
59232     move-exception v0
59234     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59236     throw v0
59237 .end method
59239 .method public unstableProviderDied(Landroid/os/IBinder;)V
59240     .registers 13
59242     :try_start_0
59243     move-object v0, p1
59245     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
59247     move-object v1, v0
59248     :try_end_4
59249     .catch Ljava/lang/ClassCastException; {:try_start_0 .. :try_end_4} :catch_e
59251     if-nez v1, :cond_33
59253     new-instance v8, Ljava/lang/NullPointerException;
59255     const-string v9, "connection is null"
59257     invoke-direct {v8, v9}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
59259     throw v8
59261     :catch_e
59262     move-exception v2
59264     new-instance v8, Ljava/lang/StringBuilder;
59266     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
59268     const-string v9, "refContentProvider: "
59270     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59272     move-result-object v8
59274     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
59276     move-result-object v8
59278     const-string v9, " not a ContentProviderConnection"
59280     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59282     move-result-object v8
59284     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
59286     move-result-object v5
59288     const-string v8, "ActivityManager"
59290     invoke-static {v8, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
59292     new-instance v8, Ljava/lang/IllegalArgumentException;
59294     invoke-direct {v8, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
59296     throw v8
59298     :cond_33
59299     monitor-enter p0
59301     :try_start_34
59302     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
59304     iget-object v7, v8, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
59306     monitor-exit p0
59308     if-nez v7, :cond_3f
59310     :goto_3b
59311     return-void
59313     :catchall_3c
59314     move-exception v8
59316     monitor-exit p0
59317     :try_end_3e
59318     .catchall {:try_start_34 .. :try_end_3e} :catchall_3c
59320     throw v8
59322     :cond_3f
59323     invoke-interface {v7}, Landroid/content/IContentProvider;->asBinder()Landroid/os/IBinder;
59325     move-result-object v8
59327     invoke-interface {v8}, Landroid/os/IBinder;->pingBinder()Z
59329     move-result v8
59331     if-eqz v8, :cond_7b
59333     monitor-enter p0
59335     :try_start_4a
59336     const-string v8, "ActivityManager"
59338     new-instance v9, Ljava/lang/StringBuilder;
59340     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
59342     const-string v10, "unstableProviderDied: caller "
59344     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59346     move-result-object v9
59348     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
59350     move-result v10
59352     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
59354     move-result-object v9
59356     const-string v10, " says "
59358     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59360     move-result-object v9
59362     invoke-virtual {v9, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
59364     move-result-object v9
59366     const-string v10, " died, but we don\'t agree"
59368     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59370     move-result-object v9
59372     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
59374     move-result-object v9
59376     invoke-static {v8, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
59378     monitor-exit p0
59380     goto :goto_3b
59382     :catchall_78
59383     move-exception v8
59385     monitor-exit p0
59386     :try_end_7a
59387     .catchall {:try_start_4a .. :try_end_7a} :catchall_78
59389     throw v8
59391     :cond_7b
59392     monitor-enter p0
59394     :try_start_7c
59395     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
59397     iget-object v8, v8, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
59399     if-eq v8, v7, :cond_87
59401     monitor-exit p0
59403     goto :goto_3b
59405     :catchall_84
59406     move-exception v8
59408     monitor-exit p0
59409     :try_end_86
59410     .catchall {:try_start_7c .. :try_end_86} :catchall_84
59412     throw v8
59414     :cond_87
59415     :try_start_87
59416     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
59418     iget-object v6, v8, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
59420     if-eqz v6, :cond_91
59422     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59424     if-nez v8, :cond_93
59426     :cond_91
59427     monitor-exit p0
59429     goto :goto_3b
59431     :cond_93
59432     const-string v8, "ActivityManager"
59434     new-instance v9, Ljava/lang/StringBuilder;
59436     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
59438     const-string v10, "Process "
59440     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59442     move-result-object v9
59444     iget-object v10, v6, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
59446     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59448     move-result-object v9
59450     const-string v10, " (pid "
59452     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59454     move-result-object v9
59456     iget v10, v6, Lcom/android/server/am/ProcessRecord;->pid:I
59458     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
59460     move-result-object v9
59462     const-string v10, ") early provider death"
59464     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59466     move-result-object v9
59468     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
59470     move-result-object v9
59472     invoke-static {v8, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
59474     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
59475     :try_end_c2
59476     .catchall {:try_start_87 .. :try_end_c2} :catchall_84
59478     move-result-wide v3
59480     :try_start_c3
59481     iget v8, v6, Lcom/android/server/am/ProcessRecord;->pid:I
59483     iget-object v9, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59485     invoke-virtual {p0, v6, v8, v9}, Lcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
59486     :try_end_ca
59487     .catchall {:try_start_c3 .. :try_end_ca} :catchall_d0
59489     :try_start_ca
59490     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59492     monitor-exit p0
59494     goto/16 :goto_3b
59496     :catchall_d0
59497     move-exception v8
59499     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59501     throw v8
59502     :try_end_d5
59503     .catchall {:try_start_ca .. :try_end_d5} :catchall_84
59504 .end method
59506 .method public updateConfiguration(Landroid/content/res/Configuration;)V
59507     .registers 7
59509     const-string v2, "android.permission.CHANGE_CONFIGURATION"
59511     const-string v3, "updateConfiguration()"
59513     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
59515     monitor-enter p0
59517     if-nez p1, :cond_14
59519     :try_start_a
59520     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
59522     if-eqz v2, :cond_14
59524     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
59526     invoke-virtual {v2}, Lcom/android/server/wm/WindowManagerService;->computeNewConfiguration()Landroid/content/res/Configuration;
59528     move-result-object p1
59530     :cond_14
59531     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
59533     if-eqz v2, :cond_1f
59535     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
59537     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
59539     invoke-virtual {v2, v3}, Lcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
59541     :cond_1f
59542     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
59544     move-result-wide v0
59546     if-eqz p1, :cond_28
59548     invoke-static {p1}, Landroid/provider/Settings$System;->clearConfiguration(Landroid/content/res/Configuration;)V
59550     :cond_28
59551     const/4 v2, 0x0
59553     const/4 v3, 0x0
59555     const/4 v4, 0x0
59557     invoke-virtual {p0, p1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
59559     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59561     monitor-exit p0
59563     return-void
59565     :catchall_33
59566     move-exception v2
59568     monitor-exit p0
59569     :try_end_35
59570     .catchall {:try_start_a .. :try_end_35} :catchall_33
59572     throw v2
59573 .end method
59575 .method updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
59576     .registers 34
59578     move-object/from16 v0, p0
59580     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
59582     if-eqz v2, :cond_9
59584     const/16 v26, 0x1
59586     :cond_8
59587     :goto_8
59588     return v26
59590     :cond_9
59591     const/16 v23, 0x0
59593     const/16 v26, 0x1
59595     if-eqz p1, :cond_16d
59597     new-instance v28, Landroid/content/res/Configuration;
59599     move-object/from16 v0, p0
59601     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
59603     move-object/from16 v0, v28
59605     invoke-direct {v0, v2}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
59607     move-object/from16 v0, v28
59609     move-object/from16 v1, p1
59611     invoke-virtual {v0, v1}, Landroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I
59613     move-result v23
59615     if-eqz v23, :cond_16d
59617     const/16 v2, 0xa9f
59619     move/from16 v0, v23
59621     invoke-static {v2, v0}, Landroid/util/EventLog;->writeEvent(II)I
59623     move-object/from16 v0, p1
59625     iget-object v2, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
59627     if-eqz v2, :cond_51
59629     if-nez p4, :cond_51
59631     move-object/from16 v0, p1
59633     iget-object v3, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
59635     move-object/from16 v0, p1
59637     iget-object v2, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
59639     move-object/from16 v0, p0
59641     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
59643     iget-object v4, v4, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
59645     invoke-virtual {v2, v4}, Ljava/util/Locale;->equals(Ljava/lang/Object;)Z
59647     move-result v2
59649     if-nez v2, :cond_124
59651     const/4 v2, 0x1
59653     :goto_48
59654     move-object/from16 v0, p1
59656     iget-boolean v4, v0, Landroid/content/res/Configuration;->userSetLocale:Z
59658     move-object/from16 v0, p0
59660     invoke-direct {v0, v3, v2, v4}, Lcom/android/server/am/ActivityManagerService;->saveLocaleLocked(Ljava/util/Locale;ZZ)V
59662     :cond_51
59663     move-object/from16 v0, p1
59665     iget-object v2, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
59667     if-eqz v2, :cond_71
59669     move-object/from16 v0, p1
59671     iget-object v3, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
59673     move-object/from16 v0, p1
59675     iget-object v2, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
59677     move-object/from16 v0, p0
59679     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
59681     iget-object v4, v4, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
59683     invoke-virtual {v2, v4}, Landroid/content/res/CustomTheme;->equals(Ljava/lang/Object;)Z
59685     move-result v2
59687     if-nez v2, :cond_127
59689     const/4 v2, 0x1
59691     :goto_6c
59692     move-object/from16 v0, p0
59694     invoke-direct {v0, v3, v2}, Lcom/android/server/am/ActivityManagerService;->saveThemeResourceLocked(Landroid/content/res/CustomTheme;Z)V
59696     :cond_71
59697     move-object/from16 v0, p0
59699     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
59701     add-int/lit8 v2, v2, 0x1
59703     move-object/from16 v0, p0
59705     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
59707     move-object/from16 v0, p0
59709     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
59711     if-gtz v2, :cond_86
59713     const/4 v2, 0x1
59715     move-object/from16 v0, p0
59717     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
59719     :cond_86
59720     move-object/from16 v0, p0
59722     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
59724     move-object/from16 v0, v28
59726     iput v2, v0, Landroid/content/res/Configuration;->seq:I
59728     move-object/from16 v0, v28
59730     move-object/from16 v1, p0
59732     iput-object v0, v1, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
59734     const-string v2, "ActivityManager"
59736     new-instance v3, Ljava/lang/StringBuilder;
59738     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
59740     const-string v4, "Config changed: "
59742     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59744     move-result-object v3
59746     move-object/from16 v0, v28
59748     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
59750     move-result-object v3
59752     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
59754     move-result-object v3
59756     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
59758     new-instance v24, Landroid/content/res/Configuration;
59760     move-object/from16 v0, p0
59762     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
59764     move-object/from16 v0, v24
59766     invoke-direct {v0, v2}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
59768     invoke-static/range {v28 .. v28}, Lcom/android/server/am/ActivityManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;)Z
59770     move-result v2
59772     move-object/from16 v0, p0
59774     iput-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
59776     invoke-static {}, Lcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
59778     move-result-object v21
59780     if-eqz v21, :cond_ce
59782     move-object/from16 v0, v21
59784     move-object/from16 v1, v24
59786     invoke-virtual {v0, v1}, Lcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V
59788     :cond_ce
59789     sget-object v2, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
59791     move-object/from16 v0, v24
59793     invoke-virtual {v2, v0}, Landroid/app/ActivityThread;->applyConfigurationToResources(Landroid/content/res/Configuration;)V
59795     if-eqz p3, :cond_fa
59797     invoke-static/range {v23 .. v23}, Landroid/provider/Settings$System;->hasInterestingConfigurationChanges(I)Z
59799     move-result v2
59801     if-eqz v2, :cond_fa
59803     move-object/from16 v0, p0
59805     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
59807     const/4 v3, 0x4
59809     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
59811     move-result-object v27
59813     new-instance v2, Landroid/content/res/Configuration;
59815     move-object/from16 v0, v24
59817     invoke-direct {v2, v0}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
59819     move-object/from16 v0, v27
59821     iput-object v2, v0, Landroid/os/Message;->obj:Ljava/lang/Object;
59823     move-object/from16 v0, p0
59825     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
59827     move-object/from16 v0, v27
59829     invoke-virtual {v2, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
59831     :cond_fa
59832     move-object/from16 v0, p0
59834     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
59836     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
59838     move-result v2
59840     add-int/lit8 v25, v2, -0x1
59842     :goto_104
59843     if-ltz v25, :cond_12a
59845     move-object/from16 v0, p0
59847     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
59849     move/from16 v0, v25
59851     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
59853     move-result-object v22
59855     check-cast v22, Lcom/android/server/am/ProcessRecord;
59857     :try_start_112
59858     move-object/from16 v0, v22
59860     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59862     if-eqz v2, :cond_121
59864     move-object/from16 v0, v22
59866     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59868     move-object/from16 v0, v24
59870     invoke-interface {v2, v0}, Landroid/app/IApplicationThread;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V
59871     :try_end_121
59872     .catch Ljava/lang/Exception; {:try_start_112 .. :try_end_121} :catch_1a8
59874     :cond_121
59875     :goto_121
59876     add-int/lit8 v25, v25, -0x1
59878     goto :goto_104
59880     :cond_124
59881     const/4 v2, 0x0
59883     goto/16 :goto_48
59885     :cond_127
59886     const/4 v2, 0x0
59888     goto/16 :goto_6c
59890     :cond_12a
59891     new-instance v5, Landroid/content/Intent;
59893     const-string v2, "android.intent.action.CONFIGURATION_CHANGED"
59895     invoke-direct {v5, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
59897     const/high16 v2, 0x6000
59899     invoke-virtual {v5, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
59901     const/4 v3, 0x0
59903     const/4 v4, 0x0
59905     const/4 v6, 0x0
59907     const/4 v7, 0x0
59909     const/4 v8, 0x0
59911     const/4 v9, 0x0
59913     const/4 v10, 0x0
59915     const/4 v11, 0x0
59917     const/4 v12, 0x0
59919     const/4 v13, 0x0
59921     sget v14, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
59923     const/16 v15, 0x3e8
59925     const/16 v16, 0x0
59927     move-object/from16 v2, p0
59929     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
59931     and-int/lit8 v2, v23, 0x4
59933     if-eqz v2, :cond_16d
59935     const/4 v7, 0x0
59937     const/4 v8, 0x0
59939     new-instance v9, Landroid/content/Intent;
59941     const-string v2, "android.intent.action.LOCALE_CHANGED"
59943     invoke-direct {v9, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
59945     const/4 v10, 0x0
59947     const/4 v11, 0x0
59949     const/4 v12, 0x0
59951     const/4 v13, 0x0
59953     const/4 v14, 0x0
59955     const/4 v15, 0x0
59957     const/16 v16, 0x0
59959     const/16 v17, 0x0
59961     sget v18, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
59963     const/16 v19, 0x3e8
59965     const/16 v20, 0x0
59967     move-object/from16 v6, p0
59969     invoke-direct/range {v6 .. v20}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
59971     :cond_16d
59972     if-eqz v23, :cond_17a
59974     if-nez p2, :cond_17a
59976     move-object/from16 v0, p0
59978     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59980     const/4 v3, 0x0
59982     invoke-virtual {v2, v3}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
59984     move-result-object p2
59986     :cond_17a
59987     if-eqz p2, :cond_193
59989     move-object/from16 v0, p0
59991     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59993     move-object/from16 v0, p2
59995     move/from16 v1, v23
59997     invoke-virtual {v2, v0, v1}, Lcom/android/server/am/ActivityStack;->ensureActivityConfigurationLocked(Lcom/android/server/am/ActivityRecord;I)Z
59999     move-result v26
60001     move-object/from16 v0, p0
60003     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
60005     move-object/from16 v0, p2
60007     move/from16 v1, v23
60009     invoke-virtual {v2, v0, v1}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;I)V
60011     :cond_193
60012     if-eqz p1, :cond_8
60014     move-object/from16 v0, p0
60016     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
60018     if-eqz v2, :cond_8
60020     move-object/from16 v0, p0
60022     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
60024     move-object/from16 v0, p0
60026     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
60028     invoke-virtual {v2, v3}, Lcom/android/server/wm/WindowManagerService;->setNewConfiguration(Landroid/content/res/Configuration;)V
60030     goto/16 :goto_8
60032     :catch_1a8
60033     move-exception v2
60035     goto/16 :goto_121
60036 .end method
60038 .method updateCpuStats()V
60039     .registers 7
60041     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
60043     move-result-wide v0
60045     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
60047     invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
60049     move-result-wide v2
60051     const-wide/16 v4, 0x1388
60053     sub-long v4, v0, v4
60055     cmp-long v2, v2, v4
60057     if-ltz v2, :cond_13
60059     :cond_12
60060     :goto_12
60061     return-void
60063     :cond_13
60064     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
60066     const/4 v3, 0x1
60068     const/4 v4, 0x0
60070     invoke-virtual {v2, v3, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
60072     move-result v2
60074     if-eqz v2, :cond_12
60076     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
60078     monitor-enter v3
60080     :try_start_20
60081     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
60083     invoke-virtual {v2}, Ljava/lang/Object;->notify()V
60085     monitor-exit v3
60087     goto :goto_12
60089     :catchall_27
60090     move-exception v2
60092     monitor-exit v3
60093     :try_end_29
60094     .catchall {:try_start_20 .. :try_end_29} :catchall_27
60096     throw v2
60097 .end method
60099 .method updateCpuStatsNow()V
60100     .registers 33
60102     move-object/from16 v0, p0
60104     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
60106     move-object/from16 v26, v0
60108     monitor-enter v26
60110     :try_start_7
60111     move-object/from16 v0, p0
60113     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
60115     move-object/from16 v25, v0
60117     const/16 v27, 0x0
60119     move-object/from16 v0, v25
60121     move/from16 v1, v27
60123     invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
60125     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
60127     move-result-wide v11
60129     const/4 v6, 0x0
60131     move-object/from16 v0, p0
60133     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
60135     move-object/from16 v25, v0
60137     invoke-virtual/range {v25 .. v25}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
60139     move-result-wide v27
60141     const-wide/16 v29, 0x1388
60143     sub-long v29, v11, v29
60145     cmp-long v25, v27, v29
60147     if-gez v25, :cond_ff
60149     move-object/from16 v0, p0
60151     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
60153     move-object/from16 v25, v0
60155     move-object/from16 v0, v25
60157     invoke-virtual {v0, v11, v12}, Ljava/util/concurrent/atomic/AtomicLong;->set(J)V
60159     const/4 v6, 0x1
60161     move-object/from16 v0, p0
60163     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60165     move-object/from16 v25, v0
60167     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->update()V
60169     const-string v25, "true"
60171     const-string v27, "events.cpu"
60173     invoke-static/range {v27 .. v27}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
60175     move-result-object v27
60177     move-object/from16 v0, v25
60179     move-object/from16 v1, v27
60181     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
60183     move-result v25
60185     if-eqz v25, :cond_ff
60187     move-object/from16 v0, p0
60189     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60191     move-object/from16 v25, v0
60193     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastUserTime()I
60195     move-result v24
60197     move-object/from16 v0, p0
60199     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60201     move-object/from16 v25, v0
60203     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastSystemTime()I
60205     move-result v20
60207     move-object/from16 v0, p0
60209     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60211     move-object/from16 v25, v0
60213     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIoWaitTime()I
60215     move-result v9
60217     move-object/from16 v0, p0
60219     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60221     move-object/from16 v25, v0
60223     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIrqTime()I
60225     move-result v10
60227     move-object/from16 v0, p0
60229     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60231     move-object/from16 v25, v0
60233     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastSoftIrqTime()I
60235     move-result v18
60237     move-object/from16 v0, p0
60239     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60241     move-object/from16 v25, v0
60243     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIdleTime()I
60245     move-result v8
60247     add-int v25, v24, v20
60249     add-int v25, v25, v9
60251     add-int v25, v25, v10
60253     add-int v25, v25, v18
60255     add-int v21, v25, v8
60257     if-nez v21, :cond_9e
60259     const/16 v21, 0x1
60261     :cond_9e
60262     const/16 v25, 0xaa1
60264     const/16 v27, 0x6
60266     move/from16 v0, v27
60268     new-array v0, v0, [Ljava/lang/Object;
60270     move-object/from16 v27, v0
60272     const/16 v28, 0x0
60274     add-int v29, v24, v20
60276     add-int v29, v29, v9
60278     add-int v29, v29, v10
60280     add-int v29, v29, v18
60282     mul-int/lit8 v29, v29, 0x64
60284     div-int v29, v29, v21
60286     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60288     move-result-object v29
60290     aput-object v29, v27, v28
60292     const/16 v28, 0x1
60294     mul-int/lit8 v29, v24, 0x64
60296     div-int v29, v29, v21
60298     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60300     move-result-object v29
60302     aput-object v29, v27, v28
60304     const/16 v28, 0x2
60306     mul-int/lit8 v29, v20, 0x64
60308     div-int v29, v29, v21
60310     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60312     move-result-object v29
60314     aput-object v29, v27, v28
60316     const/16 v28, 0x3
60318     mul-int/lit8 v29, v9, 0x64
60320     div-int v29, v29, v21
60322     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60324     move-result-object v29
60326     aput-object v29, v27, v28
60328     const/16 v28, 0x4
60330     mul-int/lit8 v29, v10, 0x64
60332     div-int v29, v29, v21
60334     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60336     move-result-object v29
60338     aput-object v29, v27, v28
60340     const/16 v28, 0x5
60342     mul-int/lit8 v29, v18, 0x64
60344     div-int v29, v29, v21
60346     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60348     move-result-object v29
60350     aput-object v29, v27, v28
60352     move/from16 v0, v25
60354     move-object/from16 v1, v27
60356     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
60358     :cond_ff
60359     move-object/from16 v0, p0
60361     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60363     move-object/from16 v25, v0
60365     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastCpuSpeedTimes()[J
60367     move-result-object v5
60369     move-object/from16 v0, p0
60371     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
60373     move-object/from16 v25, v0
60375     invoke-virtual/range {v25 .. v25}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
60377     move-result-object v4
60379     monitor-enter v4
60380     :try_end_114
60381     .catchall {:try_start_7 .. :try_end_114} :catchall_1cf
60383     :try_start_114
60384     move-object/from16 v0, p0
60386     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
60388     move-object/from16 v27, v0
60390     monitor-enter v27
60391     :try_end_11b
60392     .catchall {:try_start_114 .. :try_end_11b} :catchall_1cc
60394     if-eqz v6, :cond_20f
60396     :try_start_11d
60397     move-object/from16 v0, p0
60399     iget-boolean v0, v0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
60401     move/from16 v25, v0
60403     if-eqz v25, :cond_20f
60405     invoke-virtual {v4}, Lcom/android/internal/os/BatteryStatsImpl;->startAddingCpuLocked()I
60407     move-result v15
60409     const/16 v23, 0x0
60411     const/16 v22, 0x0
60413     move-object/from16 v0, p0
60415     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60417     move-object/from16 v25, v0
60419     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->countStats()I
60421     move-result v3
60423     const/4 v7, 0x0
60425     :goto_138
60426     if-ge v7, v3, :cond_208
60428     move-object/from16 v0, p0
60430     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
60432     move-object/from16 v25, v0
60434     move-object/from16 v0, v25
60436     invoke-virtual {v0, v7}, Lcom/android/internal/os/ProcessStats;->getStats(I)Lcom/android/internal/os/ProcessStats$Stats;
60438     move-result-object v19
60440     move-object/from16 v0, v19
60442     iget-boolean v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->working:Z
60444     move/from16 v25, v0
60446     if-nez v25, :cond_151
60448     :cond_14e
60449     :goto_14e
60450     add-int/lit8 v7, v7, 0x1
60452     goto :goto_138
60454     :cond_151
60455     move-object/from16 v0, p0
60457     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
60459     move-object/from16 v25, v0
60461     move-object/from16 v0, v19
60463     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
60465     move/from16 v28, v0
60467     move-object/from16 v0, v25
60469     move/from16 v1, v28
60471     invoke-virtual {v0, v1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
60473     move-result-object v16
60475     check-cast v16, Lcom/android/server/am/ProcessRecord;
60477     move-object/from16 v0, v19
60479     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
60481     move/from16 v25, v0
60483     mul-int v25, v25, v15
60485     div-int/lit8 v14, v25, 0x64
60487     move-object/from16 v0, v19
60489     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
60491     move/from16 v25, v0
60493     mul-int v25, v25, v15
60495     div-int/lit8 v13, v25, 0x64
60497     add-int v23, v23, v14
60499     add-int v22, v22, v13
60501     if-eqz v16, :cond_1d2
60503     move-object/from16 v0, v16
60505     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
60507     move-object/from16 v17, v0
60509     move-object/from16 v0, v19
60511     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
60513     move/from16 v25, v0
60515     sub-int v25, v25, v14
60517     move-object/from16 v0, v19
60519     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
60521     move/from16 v28, v0
60523     sub-int v28, v28, v13
60525     move-object/from16 v0, v17
60527     move/from16 v1, v25
60529     move/from16 v2, v28
60531     invoke-virtual {v0, v1, v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V
60533     move-object/from16 v0, v17
60535     invoke-virtual {v0, v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addSpeedStepTimes([J)V
60537     move-object/from16 v0, v16
60539     iget-wide v0, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
60541     move-wide/from16 v28, v0
60543     move-object/from16 v0, v19
60545     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
60547     move/from16 v25, v0
60549     move-object/from16 v0, v19
60551     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
60553     move/from16 v30, v0
60555     add-int v25, v25, v30
60557     mul-int/lit8 v25, v25, 0xa
60559     move/from16 v0, v25
60561     int-to-long v0, v0
60563     move-wide/from16 v30, v0
60565     add-long v28, v28, v30
60567     move-wide/from16 v0, v28
60569     move-object/from16 v2, v16
60571     iput-wide v0, v2, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
60573     goto :goto_14e
60575     :catchall_1c9
60576     move-exception v25
60578     monitor-exit v27
60579     :try_end_1cb
60580     .catchall {:try_start_11d .. :try_end_1cb} :catchall_1c9
60582     :try_start_1cb
60583     throw v25
60585     :catchall_1cc
60586     move-exception v25
60588     monitor-exit v4
60589     :try_end_1ce
60590     .catchall {:try_start_1cb .. :try_end_1ce} :catchall_1cc
60592     :try_start_1ce
60593     throw v25
60595     :catchall_1cf
60596     move-exception v25
60598     monitor-exit v26
60599     :try_end_1d1
60600     .catchall {:try_start_1ce .. :try_end_1d1} :catchall_1cf
60602     throw v25
60604     :cond_1d2
60605     :try_start_1d2
60606     move-object/from16 v0, v19
60608     iget-object v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->name:Ljava/lang/String;
60610     move-object/from16 v25, v0
60612     move-object/from16 v0, v19
60614     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
60616     move/from16 v28, v0
60618     move-object/from16 v0, v25
60620     move/from16 v1, v28
60622     invoke-virtual {v4, v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(Ljava/lang/String;I)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
60624     move-result-object v17
60626     if-eqz v17, :cond_14e
60628     move-object/from16 v0, v19
60630     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
60632     move/from16 v25, v0
60634     sub-int v25, v25, v14
60636     move-object/from16 v0, v19
60638     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
60640     move/from16 v28, v0
60642     sub-int v28, v28, v13
60644     move-object/from16 v0, v17
60646     move/from16 v1, v25
60648     move/from16 v2, v28
60650     invoke-virtual {v0, v1, v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V
60652     move-object/from16 v0, v17
60654     invoke-virtual {v0, v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addSpeedStepTimes([J)V
60656     goto/16 :goto_14e
60658     :cond_208
60659     move/from16 v0, v23
60661     move/from16 v1, v22
60663     invoke-virtual {v4, v15, v0, v1, v5}, Lcom/android/internal/os/BatteryStatsImpl;->finishAddingCpuLocked(III[J)V
60665     :cond_20f
60666     monitor-exit v27
60667     :try_end_210
60668     .catchall {:try_start_1d2 .. :try_end_210} :catchall_1c9
60670     :try_start_210
60671     move-object/from16 v0, p0
60673     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
60675     move-wide/from16 v27, v0
60677     const-wide/32 v29, 0x1b7740
60679     sub-long v29, v11, v29
60681     cmp-long v25, v27, v29
60683     if-gez v25, :cond_230
60685     move-object/from16 v0, p0
60687     iput-wide v11, v0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
60689     move-object/from16 v0, p0
60691     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
60693     move-object/from16 v25, v0
60695     invoke-virtual/range {v25 .. v25}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
60697     move-result-object v25
60699     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V
60701     :cond_230
60702     monitor-exit v4
60703     :try_end_231
60704     .catchall {:try_start_210 .. :try_end_231} :catchall_1cc
60706     :try_start_231
60707     monitor-exit v26
60708     :try_end_232
60709     .catchall {:try_start_231 .. :try_end_232} :catchall_1cf
60711     return-void
60712 .end method
60714 .method final updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
60715     .registers 5
60717     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
60719     add-int/lit8 v0, v0, 0x1
60721     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
60723     const/4 v0, 0x0
60725     invoke-direct {p0, p1, p2, p3, v0}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
60727     return-void
60728 .end method
60730 .method final updateOomAdjLocked()V
60731     .registers 22
60733     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord;
60735     move-result-object v3
60737     if-eqz v3, :cond_1b8
60739     iget-object v4, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
60741     :goto_8
60742     move-object/from16 v0, p0
60744     iget v0, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
60746     move/from16 v17, v0
60748     add-int/lit8 v17, v17, 0x1
60750     move/from16 v0, v17
60752     move-object/from16 v1, p0
60754     iput v0, v1, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
60756     const/16 v17, 0x0
60758     move/from16 v0, v17
60760     move-object/from16 v1, p0
60762     iput v0, v1, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
60764     sget v17, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
60766     rsub-int/lit8 v17, v17, 0xf
60768     add-int/lit8 v14, v17, 0x1
60770     move-object/from16 v0, p0
60772     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
60774     move-object/from16 v17, v0
60776     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
60778     move-result v17
60780     add-int/lit8 v17, v17, -0x4
60782     div-int v8, v17, v14
60784     const/16 v17, 0x1
60786     move/from16 v0, v17
60788     if-ge v8, v0, :cond_39
60790     const/4 v8, 0x1
60792     :cond_39
60793     const/16 v16, 0x0
60795     const/4 v13, 0x0
60797     const/4 v15, 0x0
60799     move-object/from16 v0, p0
60801     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
60803     move-object/from16 v17, v0
60805     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
60807     move-result v10
60809     sget v6, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
60811     :cond_49
60812     :goto_49
60813     if-lez v10, :cond_1bb
60815     add-int/lit8 v10, v10, -0x1
60817     move-object/from16 v0, p0
60819     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
60821     move-object/from16 v17, v0
60823     move-object/from16 v0, v17
60825     invoke-virtual {v0, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
60827     move-result-object v5
60829     check-cast v5, Lcom/android/server/am/ProcessRecord;
60831     const/16 v17, 0x1
60833     move-object/from16 v0, p0
60835     move/from16 v1, v17
60837     invoke-direct {v0, v5, v6, v4, v1}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;Z)Z
60839     const/16 v17, 0xf
60841     move/from16 v0, v17
60843     if-ge v6, v0, :cond_7c
60845     iget v0, v5, Lcom/android/server/am/ProcessRecord;->curAdj:I
60847     move/from16 v17, v0
60849     move/from16 v0, v17
60851     if-ne v0, v6, :cond_7c
60853     add-int/lit8 v16, v16, 0x1
60855     move/from16 v0, v16
60857     if-lt v0, v8, :cond_7c
60859     const/16 v16, 0x0
60861     add-int/lit8 v6, v6, 0x1
60863     :cond_7c
60864     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
60866     move/from16 v17, v0
60868     if-nez v17, :cond_49
60870     iget v0, v5, Lcom/android/server/am/ProcessRecord;->curAdj:I
60872     move/from16 v17, v0
60874     sget v18, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
60876     move/from16 v0, v17
60878     move/from16 v1, v18
60880     if-lt v0, v1, :cond_110
60882     add-int/lit8 v13, v13, 0x1
60884     move-object/from16 v0, p0
60886     iget v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
60888     move/from16 v17, v0
60890     move/from16 v0, v17
60892     if-le v13, v0, :cond_110
60894     const-string v17, "ActivityManager"
60896     new-instance v18, Ljava/lang/StringBuilder;
60898     invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;-><init>()V
60900     const-string v19, "No longer want "
60902     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
60904     move-result-object v18
60906     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
60908     move-object/from16 v19, v0
60910     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
60912     move-result-object v18
60914     const-string v19, " (pid "
60916     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
60918     move-result-object v18
60920     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
60922     move/from16 v19, v0
60924     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
60926     move-result-object v18
60928     const-string v19, "): hidden #"
60930     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
60932     move-result-object v18
60934     move-object/from16 v0, v18
60936     invoke-virtual {v0, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
60938     move-result-object v18
60940     invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
60942     move-result-object v18
60944     invoke-static/range {v17 .. v18}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
60946     const/16 v17, 0x7547
60948     const/16 v18, 0x4
60950     move/from16 v0, v18
60952     new-array v0, v0, [Ljava/lang/Object;
60954     move-object/from16 v18, v0
60956     const/16 v19, 0x0
60958     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
60960     move/from16 v20, v0
60962     invoke-static/range {v20 .. v20}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60964     move-result-object v20
60966     aput-object v20, v18, v19
60968     const/16 v19, 0x1
60970     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
60972     move-object/from16 v20, v0
60974     aput-object v20, v18, v19
60976     const/16 v19, 0x2
60978     iget v0, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
60980     move/from16 v20, v0
60982     invoke-static/range {v20 .. v20}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
60984     move-result-object v20
60986     aput-object v20, v18, v19
60988     const/16 v19, 0x3
60990     const-string v20, "too many background"
60992     aput-object v20, v18, v19
60994     invoke-static/range {v17 .. v18}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
60996     const/16 v17, 0x1
60998     move/from16 v0, v17
61000     iput-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
61002     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
61004     move/from16 v17, v0
61006     invoke-static/range {v17 .. v17}, Landroid/os/Process;->killProcessQuiet(I)V
61008     :cond_110
61009     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
61011     move/from16 v17, v0
61013     if-nez v17, :cond_196
61015     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->isolated:Z
61017     move/from16 v17, v0
61019     if-eqz v17, :cond_196
61021     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
61023     move-object/from16 v17, v0
61025     invoke-virtual/range {v17 .. v17}, Ljava/util/HashSet;->size()I
61027     move-result v17
61029     if-gtz v17, :cond_196
61031     const-string v17, "ActivityManager"
61033     new-instance v18, Ljava/lang/StringBuilder;
61035     invoke-direct/range {v18 .. v18}, Ljava/lang/StringBuilder;-><init>()V
61037     const-string v19, "Isolated process "
61039     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61041     move-result-object v18
61043     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
61045     move-object/from16 v19, v0
61047     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61049     move-result-object v18
61051     const-string v19, " (pid "
61053     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61055     move-result-object v18
61057     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
61059     move/from16 v19, v0
61061     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
61063     move-result-object v18
61065     const-string v19, ") no longer needed"
61067     invoke-virtual/range {v18 .. v19}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61069     move-result-object v18
61071     invoke-virtual/range {v18 .. v18}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
61073     move-result-object v18
61075     invoke-static/range {v17 .. v18}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
61077     const/16 v17, 0x7547
61079     const/16 v18, 0x4
61081     move/from16 v0, v18
61083     new-array v0, v0, [Ljava/lang/Object;
61085     move-object/from16 v18, v0
61087     const/16 v19, 0x0
61089     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
61091     move/from16 v20, v0
61093     invoke-static/range {v20 .. v20}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
61095     move-result-object v20
61097     aput-object v20, v18, v19
61099     const/16 v19, 0x1
61101     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
61103     move-object/from16 v20, v0
61105     aput-object v20, v18, v19
61107     const/16 v19, 0x2
61109     iget v0, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
61111     move/from16 v20, v0
61113     invoke-static/range {v20 .. v20}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
61115     move-result-object v20
61117     aput-object v20, v18, v19
61119     const/16 v19, 0x3
61121     const-string v20, "isolated not needed"
61123     aput-object v20, v18, v19
61125     invoke-static/range {v17 .. v18}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
61127     const/16 v17, 0x1
61129     move/from16 v0, v17
61131     iput-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
61133     iget v0, v5, Lcom/android/server/am/ProcessRecord;->pid:I
61135     move/from16 v17, v0
61137     invoke-static/range {v17 .. v17}, Landroid/os/Process;->killProcessQuiet(I)V
61139     :cond_196
61140     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61142     move/from16 v17, v0
61144     const/16 v18, 0x6
61146     move/from16 v0, v17
61148     move/from16 v1, v18
61150     if-lt v0, v1, :cond_49
61152     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61154     move/from16 v17, v0
61156     const/16 v18, 0x8
61158     move/from16 v0, v17
61160     move/from16 v1, v18
61162     if-eq v0, v1, :cond_49
61164     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
61166     move/from16 v17, v0
61168     if-nez v17, :cond_49
61170     add-int/lit8 v15, v15, 0x1
61172     goto/16 :goto_49
61174     :cond_1b8
61175     const/4 v4, 0x0
61177     goto/16 :goto_8
61179     :cond_1bb
61180     move-object/from16 v0, p0
61182     iget v0, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
61184     move/from16 v17, v0
61186     move/from16 v0, v17
61188     move-object/from16 v1, p0
61190     iput v0, v1, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
61192     const/16 v17, 0x7
61194     move/from16 v0, v17
61196     if-gt v13, v0, :cond_2e8
61198     move-object/from16 v0, p0
61200     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
61202     move-object/from16 v17, v0
61204     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
61206     move-result v2
61208     div-int/lit8 v8, v15, 0x3
61210     const/4 v12, 0x2
61212     move-object/from16 v0, p0
61214     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
61216     move-object/from16 v17, v0
61218     if-eqz v17, :cond_1e4
61220     add-int/lit8 v12, v12, 0x1
61222     :cond_1e4
61223     move-object/from16 v0, p0
61225     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
61227     move-object/from16 v17, v0
61229     if-eqz v17, :cond_1ee
61231     add-int/lit8 v12, v12, 0x1
61233     :cond_1ee
61234     if-ge v8, v12, :cond_1f1
61236     move v8, v12
61238     :cond_1f1
61239     const/16 v16, 0x0
61241     const/16 v17, 0x3
61243     move/from16 v0, v17
61245     if-gt v13, v0, :cond_253
61247     const/16 v9, 0xf
61249     :goto_1fb
61250     const/16 v7, 0x50
61252     const/4 v10, 0x0
61254     :goto_1fe
61255     if-ge v10, v2, :cond_345
61257     move-object/from16 v0, p0
61259     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
61261     move-object/from16 v17, v0
61263     move-object/from16 v0, v17
61265     invoke-virtual {v0, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
61267     move-result-object v5
61269     check-cast v5, Lcom/android/server/am/ProcessRecord;
61271     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61273     move/from16 v17, v0
61275     const/16 v18, 0x6
61277     move/from16 v0, v17
61279     move/from16 v1, v18
61281     if-lt v0, v1, :cond_264
61283     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61285     move/from16 v17, v0
61287     const/16 v18, 0x8
61289     move/from16 v0, v17
61291     move/from16 v1, v18
61293     if-eq v0, v1, :cond_264
61295     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
61297     move/from16 v17, v0
61299     if-nez v17, :cond_264
61301     iget v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61303     move/from16 v17, v0
61305     move/from16 v0, v17
61307     if-ge v0, v7, :cond_243
61309     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61311     move-object/from16 v17, v0
61313     if-eqz v17, :cond_243
61315     :try_start_23a
61316     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61318     move-object/from16 v17, v0
61320     move-object/from16 v0, v17
61322     invoke-interface {v0, v7}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
61323     :try_end_243
61324     .catch Landroid/os/RemoteException; {:try_start_23a .. :try_end_243} :catch_367
61326     :cond_243
61327     :goto_243
61328     iput v7, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61330     add-int/lit8 v16, v16, 0x1
61332     move/from16 v0, v16
61334     if-lt v0, v8, :cond_250
61336     const/16 v16, 0x0
61338     sparse-switch v7, :sswitch_data_36a
61340     :cond_250
61341     :goto_250
61342     add-int/lit8 v10, v10, 0x1
61344     goto :goto_1fe
61346     :cond_253
61347     const/16 v17, 0x5
61349     move/from16 v0, v17
61351     if-gt v13, v0, :cond_25c
61353     const/16 v9, 0xa
61355     goto :goto_1fb
61357     :cond_25c
61358     const/4 v9, 0x5
61360     goto :goto_1fb
61362     :sswitch_25e
61363     const/16 v7, 0x3c
61365     goto :goto_250
61367     :sswitch_261
61368     const/16 v7, 0x28
61370     goto :goto_250
61372     :cond_264
61373     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61375     move/from16 v17, v0
61377     const/16 v18, 0x3
61379     move/from16 v0, v17
61381     move/from16 v1, v18
61383     if-ne v0, v1, :cond_292
61385     iget v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61387     move/from16 v17, v0
61389     const/16 v18, 0x28
61391     move/from16 v0, v17
61393     move/from16 v1, v18
61395     if-ge v0, v1, :cond_28b
61397     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61399     move-object/from16 v17, v0
61401     if-eqz v17, :cond_28b
61403     :try_start_282
61404     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61406     move-object/from16 v17, v0
61408     const/16 v18, 0x28
61410     invoke-interface/range {v17 .. v18}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
61411     :try_end_28b
61412     .catch Landroid/os/RemoteException; {:try_start_282 .. :try_end_28b} :catch_364
61414     :cond_28b
61415     :goto_28b
61416     const/16 v17, 0x28
61418     move/from16 v0, v17
61420     iput v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61422     goto :goto_250
61424     :cond_292
61425     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61427     move/from16 v17, v0
61429     const/16 v18, 0x1
61431     move/from16 v0, v17
61433     move/from16 v1, v18
61435     if-gt v0, v1, :cond_2a4
61437     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
61439     move/from16 v17, v0
61441     if-eqz v17, :cond_2cd
61443     :cond_2a4
61444     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
61446     move/from16 v17, v0
61448     if-eqz v17, :cond_2cd
61450     const/16 v11, 0x14
61452     iget v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61454     move/from16 v17, v0
61456     const/16 v18, 0x14
61458     move/from16 v0, v17
61460     move/from16 v1, v18
61462     if-ge v0, v1, :cond_2c7
61464     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61466     move-object/from16 v17, v0
61468     if-eqz v17, :cond_2c7
61470     :try_start_2be
61471     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61473     move-object/from16 v17, v0
61475     const/16 v18, 0x14
61477     invoke-interface/range {v17 .. v18}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
61478     :try_end_2c7
61479     .catch Landroid/os/RemoteException; {:try_start_2be .. :try_end_2c7} :catch_361
61481     :cond_2c7
61482     :goto_2c7
61483     const/16 v17, 0x0
61485     move/from16 v0, v17
61487     iput-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
61489     :cond_2cd
61490     iget v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61492     move/from16 v17, v0
61494     move/from16 v0, v17
61496     if-ge v0, v9, :cond_2e4
61498     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61500     move-object/from16 v17, v0
61502     if-eqz v17, :cond_2e4
61504     :try_start_2db
61505     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61507     move-object/from16 v17, v0
61509     move-object/from16 v0, v17
61511     invoke-interface {v0, v9}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
61512     :try_end_2e4
61513     .catch Landroid/os/RemoteException; {:try_start_2db .. :try_end_2e4} :catch_35f
61515     :cond_2e4
61516     :goto_2e4
61517     iput v9, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61519     goto/16 :goto_250
61521     :cond_2e8
61522     move-object/from16 v0, p0
61524     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
61526     move-object/from16 v17, v0
61528     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
61530     move-result v2
61532     const/4 v10, 0x0
61534     :goto_2f3
61535     if-ge v10, v2, :cond_345
61537     move-object/from16 v0, p0
61539     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
61541     move-object/from16 v17, v0
61543     move-object/from16 v0, v17
61545     invoke-virtual {v0, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
61547     move-result-object v5
61549     check-cast v5, Lcom/android/server/am/ProcessRecord;
61551     iget v0, v5, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
61553     move/from16 v17, v0
61555     const/16 v18, 0x1
61557     move/from16 v0, v17
61559     move/from16 v1, v18
61561     if-gt v0, v1, :cond_315
61563     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
61565     move/from16 v17, v0
61567     if-eqz v17, :cond_33c
61569     :cond_315
61570     iget-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
61572     move/from16 v17, v0
61574     if-eqz v17, :cond_33c
61576     iget v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61578     move/from16 v17, v0
61580     const/16 v18, 0x14
61582     move/from16 v0, v17
61584     move/from16 v1, v18
61586     if-ge v0, v1, :cond_336
61588     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61590     move-object/from16 v17, v0
61592     if-eqz v17, :cond_336
61594     :try_start_32d
61595     iget-object v0, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
61597     move-object/from16 v17, v0
61599     const/16 v18, 0x14
61601     invoke-interface/range {v17 .. v18}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
61602     :try_end_336
61603     .catch Landroid/os/RemoteException; {:try_start_32d .. :try_end_336} :catch_35d
61605     :cond_336
61606     :goto_336
61607     const/16 v17, 0x0
61609     move/from16 v0, v17
61611     iput-boolean v0, v5, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
61613     :cond_33c
61614     const/16 v17, 0x0
61616     move/from16 v0, v17
61618     iput v0, v5, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
61620     add-int/lit8 v10, v10, 0x1
61622     goto :goto_2f3
61624     :cond_345
61625     move-object/from16 v0, p0
61627     iget-boolean v0, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
61629     move/from16 v17, v0
61631     if-eqz v17, :cond_35c
61633     move-object/from16 v0, p0
61635     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
61637     move-object/from16 v17, v0
61639     const/16 v18, 0x0
61641     const/16 v19, 0x0
61643     const-string v20, "always-finish"
61645     invoke-virtual/range {v17 .. v20}, Lcom/android/server/am/ActivityStack;->scheduleDestroyActivities(Lcom/android/server/am/ProcessRecord;ZLjava/lang/String;)V
61647     :cond_35c
61648     return-void
61650     :catch_35d
61651     move-exception v17
61653     goto :goto_336
61655     :catch_35f
61656     move-exception v17
61658     goto :goto_2e4
61660     :catch_361
61661     move-exception v17
61663     goto/16 :goto_2c7
61665     :catch_364
61666     move-exception v17
61668     goto/16 :goto_28b
61670     :catch_367
61671     move-exception v17
61673     goto/16 :goto_243
61675     :sswitch_data_36a
61676     .sparse-switch
61677         0x3c -> :sswitch_261
61678         0x50 -> :sswitch_25e
61679     .end sparse-switch
61680 .end method
61682 .method public updatePersistentConfiguration(Landroid/content/res/Configuration;)V
61683     .registers 7
61685     const-string v2, "android.permission.CHANGE_CONFIGURATION"
61687     const-string v3, "updateConfiguration()"
61689     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
61691     const-string v2, "android.permission.WRITE_SETTINGS"
61693     const-string v3, "updateConfiguration()"
61695     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
61697     if-nez p1, :cond_18
61699     new-instance v2, Ljava/lang/NullPointerException;
61701     const-string v3, "Configuration must not be null"
61703     invoke-direct {v2, v3}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
61705     throw v2
61707     :cond_18
61708     monitor-enter p0
61710     :try_start_19
61711     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
61713     move-result-wide v0
61715     const/4 v2, 0x0
61717     const/4 v3, 0x1
61719     const/4 v4, 0x0
61721     invoke-virtual {p0, p1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
61723     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
61725     monitor-exit p0
61727     return-void
61729     :catchall_28
61730     move-exception v2
61732     monitor-exit p0
61733     :try_end_2a
61734     .catchall {:try_start_19 .. :try_end_2a} :catchall_28
61736     throw v2
61737 .end method
61739 .method public updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
61740     .registers 7
61742     const/4 v0, 0x0
61744     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
61746     invoke-virtual {v3}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
61748     move-result-object v1
61750     :cond_7
61751     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
61753     move-result v3
61755     if-eqz v3, :cond_18
61757     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
61759     move-result-object v2
61761     check-cast v2, Lcom/android/server/am/ServiceRecord;
61763     iget-boolean v3, v2, Lcom/android/server/am/ServiceRecord;->isForeground:Z
61765     if-eqz v3, :cond_7
61767     const/4 v0, 0x1
61769     :cond_18
61770     iget-boolean v3, p1, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
61772     if-eq v0, v3, :cond_23
61774     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
61776     if-eqz p2, :cond_23
61778     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
61780     :cond_23
61781     return-void
61782 .end method
61784 .method updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
61785     .registers 5
61787     if-eqz p2, :cond_a
61789     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
61791     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->realActivity:Landroid/content/ComponentName;
61793     invoke-virtual {v0, v1}, Lcom/android/server/am/UsageStatsService;->noteResumeComponent(Landroid/content/ComponentName;)V
61795     :goto_9
61796     return-void
61798     :cond_a
61799     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
61801     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->realActivity:Landroid/content/ComponentName;
61803     invoke-virtual {v0, v1}, Lcom/android/server/am/UsageStatsService;->notePauseComponent(Landroid/content/ComponentName;)V
61805     goto :goto_9
61806 .end method
61808 .method final verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
61809     .registers 7
61811     const/high16 v4, 0x4000
61813     if-eqz p1, :cond_13
61815     invoke-virtual {p1}, Landroid/content/Intent;->hasFileDescriptors()Z
61817     move-result v2
61819     const/4 v3, 0x1
61821     if-ne v2, v3, :cond_13
61823     new-instance v2, Ljava/lang/IllegalArgumentException;
61825     const-string v3, "File descriptors passed in Intent"
61827     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
61829     throw v2
61831     :cond_13
61832     invoke-virtual {p1}, Landroid/content/Intent;->getFlags()I
61834     move-result v0
61836     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
61838     if-nez v2, :cond_29
61840     const/high16 v2, 0x800
61842     and-int/2addr v2, v0
61844     if-eqz v2, :cond_36
61846     new-instance v1, Landroid/content/Intent;
61848     invoke-direct {v1, p1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
61850     invoke-virtual {v1, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
61852     move-object p1, v1
61854     :cond_29
61855     const/high16 v2, 0x400
61857     and-int/2addr v2, v0
61859     if-eqz v2, :cond_60
61861     new-instance v2, Ljava/lang/IllegalArgumentException;
61863     const-string v3, "Can\'t use FLAG_RECEIVER_BOOT_UPGRADE here"
61865     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
61867     throw v2
61869     :cond_36
61870     and-int v2, v0, v4
61872     if-nez v2, :cond_29
61874     const-string v2, "ActivityManager"
61876     new-instance v3, Ljava/lang/StringBuilder;
61878     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
61880     const-string v4, "Attempt to launch receivers of broadcast intent "
61882     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61884     move-result-object v3
61886     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
61888     move-result-object v3
61890     const-string v4, " before boot completion"
61892     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
61894     move-result-object v3
61896     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
61898     move-result-object v3
61900     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
61902     new-instance v2, Ljava/lang/IllegalStateException;
61904     const-string v3, "Cannot broadcast before boot completed"
61906     invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
61908     throw v2
61910     :cond_60
61911     return-object p1
61912 .end method
61914 .method public wakingUp()V
61915     .registers 3
61917     const-string v0, "android.permission.DEVICE_POWER"
61919     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
61921     move-result v0
61923     if-eqz v0, :cond_10
61925     new-instance v0, Ljava/lang/SecurityException;
61927     const-string v1, "Requires permission android.permission.DEVICE_POWER"
61929     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
61931     throw v0
61933     :cond_10
61934     monitor-enter p0
61936     const/4 v0, 0x0
61938     :try_start_12
61939     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
61941     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
61943     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
61945     monitor-exit p0
61947     return-void
61949     :catchall_1c
61950     move-exception v0
61952     monitor-exit p0
61953     :try_end_1e
61954     .catchall {:try_start_12 .. :try_end_1e} :catchall_1c
61956     throw v0
61957 .end method
61959 .method public willActivityBeVisible(Landroid/os/IBinder;)Z
61960     .registers 6
61962     const/4 v2, 0x1
61964     monitor-enter p0
61966     :try_start_2
61967     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
61969     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
61971     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
61973     move-result v3
61975     add-int/lit8 v0, v3, -0x1
61977     :goto_c
61978     if-ltz v0, :cond_2f
61980     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
61982     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
61984     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
61986     move-result-object v1
61988     check-cast v1, Lcom/android/server/am/ActivityRecord;
61990     iget-object v3, v1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
61992     if-ne v3, p1, :cond_1e
61994     monitor-exit p0
61996     :goto_1d
61997     return v2
61999     :cond_1e
62000     iget-boolean v3, v1, Lcom/android/server/am/ActivityRecord;->fullscreen:Z
62002     if-eqz v3, :cond_2c
62004     iget-boolean v3, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
62006     if-nez v3, :cond_2c
62008     const/4 v2, 0x0
62010     monitor-exit p0
62012     goto :goto_1d
62014     :catchall_29
62015     move-exception v2
62017     monitor-exit p0
62018     :try_end_2b
62019     .catchall {:try_start_2 .. :try_end_2b} :catchall_29
62021     throw v2
62023     :cond_2c
62024     add-int/lit8 v0, v0, -0x1
62026     goto :goto_c
62028     :cond_2f
62029     :try_start_2f
62030     monitor-exit p0
62031     :try_end_30
62032     .catchall {:try_start_2f .. :try_end_30} :catchall_29
62034     goto :goto_1d
62035 .end method