Android 7.0 start home activity and send boot completed broadcast
来源:互联网 发布:Windows的tmp路径 编辑:程序博客网 时间:2024/05/29 12:03
Start home activity flow.
04-21 08:17:55.254 558 558 W System.err: at com.android.server.am.ActivityManagerService.getHomeIntent(ActivityManagerService.java:3958)
04-21 08:17:55.254 558 558 W System.err: at com.android.server.am.ActivityManagerService.startHomeActivityLocked(ActivityManagerService.java:3971)
04-21 08:17:55.254 558 558 W System.err: at com.android.server.am.ActivityManagerService.systemReady(ActivityManagerService.java:13428)
04-21 08:17:55.254 558 558 W System.err: at com.android.server.SystemServer.startOtherServices(SystemServer.java:1308)
04-21 08:17:55.254 558 558 W System.err: at com.android.server.SystemServer.run(SystemServer.java:334)
In frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
1188 String mTopAction = Intent.ACTION_MAIN;
3950IntentgetHomeIntent() {3951 Intent intent = new Intent(mTopAction, mTopData != null ? Uri.parse(mTopData) : null);3952 intent.setComponent(mTopComponent);3953 intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);3954 if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) {3955 intent.addCategory(Intent.CATEGORY_HOME);3956 }3957 return intent;3958 }39593960 boolean startHomeActivityLocked(int userId, String reason) {3961 if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL3962 && mTopAction == null) {3963 // We are running in factory test mode, but unable to find3964 // the factory test app, so just sit around displaying the3965 // error message and don't try to start anything.3966 return false;3967 }3968 Intent intent = getHomeIntent();3969 ActivityInfo aInfo = resolveActivityInfo(intent, STOCK_PM_FLAGS, userId);3970 if (aInfo != null) {3971 intent.setComponent(new ComponentName(aInfo.applicationInfo.packageName, aInfo.name));3972 // Don't do this if the home app is currently being3973 // instrumented.3974 aInfo = new ActivityInfo(aInfo);3975 aInfo.applicationInfo = getAppInfoForUser(aInfo.applicationInfo, userId);3976 ProcessRecord app = getProcessRecordLocked(aInfo.processName,3977 aInfo.applicationInfo.uid, true);3978 if (app == null || app.instrumentationClass == null) {3979 intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);3980 mActivityStarter.startHomeActivityLocked(intent, aInfo, reason);3981 }3982 } else {3983 Slog.wtf(TAG, "No home screen found for " + intent, new Throwable());3984 }39853986 return true;3987 }Then,
04-21 08:17:55.258 558 558 E ActivityManager: startHomeActivityLocked, packageName: com.android.settings
04-21 08:17:55.258 558 558 E ActivityManager: startHomeActivityLocked, aInfo.name: com.android.settings.FallbackHome
04-21 08:17:55.258 558 558 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.settings/.FallbackHome}
FallbackHomejust set some attributes and finish itself.
Then AMS will try to start other home activity (becauseFallbackHome has the lowest priority, -1000) .This time it will find the real home activity defined by user. It is usually launcher.
04-21 08:17:58.422 558 571 W System.err: at com.android.server.am.ActivityManagerService.getHomeIntent(ActivityManagerService.java:3958)
04-21 08:17:58.422 558 571 W System.err: at com.android.server.am.ActivityManagerService.startHomeActivityLocked(ActivityManagerService.java:3971)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStackSupervisor.resumeHomeStackTask(ActivityStackSupervisor.java:677)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:2196)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStack.resumeTopActivityUncheckedLocked(ActivityStack.java:2143)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:1841)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:1831)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStack.finishCurrentActivityLocked(ActivityStack.java:3639)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1301)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:1220)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:7001)
04-21 08:17:58.423 558 571 W System.err: at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:571)
04-21 08:17:58.423 558 571 W System.err: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2819)
04-21 08:17:58.423 558 571 W System.err: at android.os.Binder.execTransact(Binder.java:565)
Boot completed broadcast sending flow.
In frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
5956 void enableScreenIfNeededLocked() {5957 if (DEBUG_BOOT) {5958 RuntimeException here = new RuntimeException("here");5959 here.fillInStackTrace();5960 Slog.i(TAG_WM, "enableScreenIfNeededLocked: mDisplayEnabled=" + mDisplayEnabled5961 + " mForceDisplayEnabled=" + mForceDisplayEnabled5962 + " mShowingBootMessages=" + mShowingBootMessages5963 + " mSystemBooted=" + mSystemBooted, here);5964 }5965 if (mDisplayEnabled) {5966 return;5967 }5968 if (!mSystemBooted && !mShowingBootMessages) {5969 return;5970 }5971 mH.sendEmptyMessage(H.ENABLE_SCREEN);5972 }
04-21 07:22:00.087 550 605 W System.err: at com.android.server.wm.WindowManagerService.enableScreenIfNeededLocked(WindowManagerService.java:5971)
04-21 07:22:00.087 550 605 W System.err: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner(WindowSurfacePlacer.java:579)
04-21 07:22:00.087 550 605 W System.err: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:237)
04-21 07:22:00.087 550 605 W System.err: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:185)
04-21 07:22:00.087 550 605 W System.err: at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8384)
04-21 07:22:00.087 550 605 W System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
04-21 07:22:00.087 550 605 W System.err: at android.os.Looper.loop(Looper.java:154)
04-21 07:22:00.087 550 605 W System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
04-21 07:22:00.087 550 605 W System.err: at com.android.server.ServiceThread.run(ServiceThread.java:46)
In frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
8633 case ENABLE_SCREEN: {8634 performEnableScreen();8635 break;8636 }
In frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
04-21 07:22:00.096 550 605 W System.err: at com.android.server.wm.WindowManagerService.checkBootAnimationCompleteLocked(WindowManagerService.java:6111)
04-21 07:22:00.096 550 605 W System.err: at com.android.server.wm.WindowManagerService.performEnableScreen(WindowManagerService.java:6084)
04-21 07:22:00.096 550 605 W System.err: at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8640)
04-21 07:22:00.096 550 605 W System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
04-21 07:22:00.096 550 605 W System.err: at android.os.Looper.loop(Looper.java:154)
04-21 07:22:00.096 550 605 W System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
04-21 07:22:00.096 550 605 W System.err: at com.android.server.ServiceThread.run(ServiceThread.java:46)
6106 private boolean checkBootAnimationCompleteLocked() {6107 if (SystemService.isRunning(BOOT_ANIMATION_SERVICE)) {6108 mH.removeMessages(H.CHECK_IF_BOOT_ANIMATION_FINISHED);6109 mH.sendEmptyMessageDelayed(H.CHECK_IF_BOOT_ANIMATION_FINISHED,6110 BOOT_ANIMATION_POLL_INTERVAL);6111 if (DEBUG_BOOT) Slog.i(TAG_WM, "checkBootAnimationComplete: Waiting for anim complete");6112 return false;6113 }6114 if (DEBUG_BOOT) Slog.i(TAG_WM, "checkBootAnimationComplete: Animation complete!");6115 return true;6116 }
In frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
8841 case CHECK_IF_BOOT_ANIMATION_FINISHED: {8842 final boolean bootAnimationComplete;8843 synchronized (mWindowMap) {8844 if (DEBUG_BOOT) Slog.i(TAG_WM, "CHECK_IF_BOOT_ANIMATION_FINISHED:");8845 bootAnimationComplete = checkBootAnimationCompleteLocked();8846 }8847 if (bootAnimationComplete) {8848 performEnableScreen();8849 }8850 }
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.UserController.finishUserUnlocking(UserController.java:285)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.UserController.unlockUserCleared(UserController.java:1019)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.UserController.maybeUnlockUser(UserController.java:978)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.UserController.finishUserBoot(UserController.java:275)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.UserController.sendBootCompletedLocked(UserController.java:1380)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.ActivityManagerService.finishBooting(ActivityManagerService.java:6931)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.am.ActivityManagerService.bootAnimationComplete(ActivityManagerService.java:6957)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.wm.WindowManagerService.performEnableScreen(WindowManagerService.java:6099)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8854)
04-21 07:22:00.411 550 605 W System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
04-21 07:22:00.411 550 605 W System.err: at android.os.Looper.loop(Looper.java:154)
04-21 07:22:00.411 550 605 W System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
04-21 07:22:00.411 550 605 W System.err: at com.android.server.ServiceThread.run(ServiceThread.java:46)
In frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
6833 final void finishBooting() {6908 if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) {6909 // Start looking for apps that are abusing wake locks.6910 Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_WAKE_LOCKS_MSG);6911 mHandler.sendMessageDelayed(nmsg, POWER_CHECK_DELAY);6912 // Tell anyone interested that we are done booting!6913 SystemProperties.set("sys.boot_completed", "1");69146915 // And trigger dev.bootcomplete if we are not showing encryption progress6916 if (!"trigger_restart_min_framework".equals(SystemProperties.get("vold.decrypt"))6917 || "".equals(SystemProperties.get("vold.encrypt_progress"))) {6918 SystemProperties.set("dev.bootcomplete", "1");6919 }6920 mUserController.sendBootCompletedLocked(6921 new IIntentReceiver.Stub() {6922 @Override6923 public void performReceive(Intent intent, int resultCode,6924 String data, Bundle extras, boolean ordered,6925 boolean sticky, int sendingUser) {6926 synchronized (ActivityManagerService.this) {6927 requestPssAllProcsLocked(SystemClock.uptimeMillis(),6928 true, false);6929 }6930 }6931 });6932 scheduleStartProfilesLocked();6933 }6934 }6935 }
In frameworks/base/services/core/java/com/android/server/am/UserController.java
280 private void finishUserUnlocking(final UserState uss) {281 final int userId = uss.mHandle.getIdentifier();282 boolean proceedWithUnlock = false;295296 if (proceedWithUnlock) {297 uss.mUnlockProgress.start();304305 // Dispatch unlocked to system services; when fully dispatched,306 // that calls through to the next "unlocked" phase307 mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0, uss)308 .sendToTarget();309 }310 }
In frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
2038 case SYSTEM_USER_UNLOCK_MSG: {2039 final int userId = msg.arg1;2040 mSystemServiceManager.unlockUser(userId);2041 synchronized (ActivityManagerService.this) {2042 mRecentTasks.loadUserRecentsLocked(userId);2043 }2044 if (userId == UserHandle.USER_SYSTEM) {2045 startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE);2046 }2047 installEncryptionUnawareProviders(userId);2048 mUserController.finishUserUnlocked((UserState) msg.obj);2049 break;2050 }
04-21 07:22:01.369 550 583 W System.err: at com.android.server.am.UserController.finishUserUnlockedCompleted(UserController.java:389)
04-21 07:22:01.369 550 583 W System.err: at com.android.server.am.UserController.finishUserUnlocked(UserController.java:382)
04-21 07:22:01.369 550 583 W System.err: at com.android.server.am.ActivityManagerService$MainHandler.handleMessage(ActivityManagerService.java:2048)
04-21 07:22:01.369 550 583 W System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
04-21 07:22:01.369 550 583 W System.err: at android.os.Looper.loop(Looper.java:154)
04-21 07:22:01.369 550 583 W System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
04-21 07:22:01.369 550 583 W System.err: at com.android.server.ServiceThread.run(ServiceThread.java:46)
382 private void finishUserUnlockedCompleted(UserState uss) {383 final int userId = uss.mHandle.getIdentifier();384 synchronized (mService) {385 // Bail if we ended up with a stale user386 if (mStartedUsers.get(uss.mHandle.getIdentifier()) != uss) return;387 final UserInfo userInfo = getUserInfo(userId);388 if (userInfo == null) {389 return;390 }391392 // Only keep marching forward if user is actually unlocked393 if (!StorageManager.isUserKeyUnlocked(userId)) return;394395 // Remember that we logged in396 mUserManager.onUserLoggedIn(userId);397398 if (!userInfo.isInitialized()) {399 if (userId != UserHandle.USER_SYSTEM) {400 Slog.d(TAG, "Initializing user #" + userId);401 Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE);402 intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);403 mService.broadcastIntentLocked(null, null, intent, null,404 new IIntentReceiver.Stub() {405 @Override406 public void performReceive(Intent intent, int resultCode,407 String data, Bundle extras, boolean ordered,408 boolean sticky, int sendingUser) {409 // Note: performReceive is called with mService lock held410 getUserManager().makeInitialized(userInfo.id);411 }412 }, 0, null, null, null, AppOpsManager.OP_NONE,413 null, true, false, MY_PID, SYSTEM_UID, userId);414 }415 }416417 Slog.d(TAG, "Sending BOOT_COMPLETE user #" + userId);418 int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000);419 MetricsLogger.histogram(mService.mContext, "framework_boot_completed", uptimeSeconds);420 final Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED, null);421 bootIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);422 bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT423 | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);424 mService.broadcastIntentLocked(null, null, bootIntent, null, null, 0, null, null,425 new String[] { android.Manifest.permission.RECEIVE_BOOT_COMPLETED },426 AppOpsManager.OP_NONE, null, true, false, MY_PID, SYSTEM_UID, userId);427 }428 }
- Android 7.0 start home activity and send boot completed broadcast
- [Android] Start your activity after boot completed
- Cannot broadcast before boot completed
- java.lang.IllegalStateException: Cannot broadcast before boot completed
- android send broadcast接收不到
- Android Shell command to send broadcast.
- android service and broadcast
- Android Broadcast and BroadcastReceiver
- Android Broadcast Intents and Broadcast Receivers
- Android Broadcast Intents and Broadcast Receivers
- am start命令启动Activity、broadcast发送广播
- Android Home and back
- 【Android】not allowed to send broadcast android.intent.action.MEDIA_MOUNTED
- Permission Denial: not allowed to send broadcast in android
- 解决 not allowed to send broadcast android.intent.action.MEDIA_MOUNTED
- Android Activity& service&Broadcast receiver 生命周期
- android中service、activity、broadcast的使用
- Android:adb 启动activity、service,发送broadcast
- TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'(已解决)
- TP5在虚拟主机上部署遇到的坑
- 十七、Git使用详解与Github上传代码
- C++中的RTTI机制详解
- Centos6.5下 kibana5.2.2的安装(实践成功)
- Android 7.0 start home activity and send boot completed broadcast
- Python股市数据分析教程——学会它,或可以实现半“智能”炒股 (Part 1)
- VUEJS 2.0 子组件访问/调用父组件的 方法
- for循环中第三个条件i++和++i有区别吗?
- Ubuntu16.04安装Tensorflow存在的问题汇总
- Latex 模版 简历+学术论文
- 第十天2017/04/21(1、函数指针、❤动态库回调❤)
- 指定ES网络地址后无法访问的解决办法
- 分布式——接口调用