精华内容
下载资源
问答
  • 启动APP的设置页面 Intent localIntent = new Intent(); localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); ...

       启动到APP的设置页面

    Intent localIntent = new Intent();
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
    localIntent.setData(Uri.fromParts("package", getActivity().getPackageName(), null));
    startActivity(localIntent);

    小米手机自启动管理页

    private void openAtutoStart() {
            Intent intent = new Intent();
            intent.setAction("miui.intent.action.OP_AUTO_START");
            intent.addCategory("android.intent.category.DEFAULT");
            startActivity(intent);
    
    }

    小米手机APP权限管理页

    private void openAppPermission(Activity activity, String packageName) {
            Intent intent = new Intent();
            intent.setAction("miui.intent.action.APP_PERM_EDITOR");
            intent.addCategory("android.intent.category.DEFAULT");
            intent.putExtra("extra_pkgname", packageName);
            activity.startActivity(intent);
    }


       

    展开全文
  • 语言管理器用于处理App更改语言,而不重新启动App
  • 华为手机APP启动管理为分自动管理和手动管理,开启自动管理后将采用智能方式开启或关闭手机APP应用是否随手机启动自启或后台自启,采用手动管理模式可以最大可能的保证指定的手机APP应用开机或后台中自启动、允许...

    华为手机APP启动管理为分自动管理和手动管理,开启自动管理后将采用智能方式开启或关闭手机APP应用是否随手机启动自启或后台自启,采用手动管理模式可以最大可能的保证指定的手机APP应用开机或后台中自启动、允许关联启动、允许后台活动等。

    华为手机设置启动管理自动管理或手动管理可参考如下步骤:

    1、在华为手机首屏打开手机管家;

    华为手机怎么设置APP开机启动管理将自动管理修改成手动管理

    2、在手机管理内找到启动管理;

    华为手机怎么设置APP开机启动管理将自动管理修改成手动管理

    3、在启动管理内,找到敬业签APP或其他需要设置启动管理自动管理为手动管理的APP应用,默认为自动管理。

    华为手机怎么设置APP开机启动管理将自动管理修改成手动管理

    4、点击要设置启动管理的APP将关闭自动管理,并弹出手机动管理设置项,建议全部开启,确定即可完成将启动管理默认的自动管理修改为手动管理。

    华为手机怎么设置APP开机启动管理将自动管理修改成手动管理

    华为手机怎么设置APP开机启动管理将自动管理修改成手动管理

    展开全文
  • 最近在开发一个APP交互时,遇到这样的需求,1、APP拉起第三方的APP,并且传值,2第三方APP拉起我们的APP,并可以根据传递过来的值启动相对应的页面。 我们通过Intent的隐式启动来拉起。 隐式启动拉起第三方APP有三...

    1.需求

    在开发中,作为程序员来说什么样子的需求没遇见过,一句话那就是什么需求都没问题(时间允许)。
    最近在开发一个APP交互时,遇到这样的需求,1、自家APP拉起第三方的APP,并且传值,2、第三方APP拉起咱们的APP,并且根据传递过来的值启动相对应的页面。
    Android开发一般页面分为启动页(SplashActivity)、引导页(GuideActivity)、活动闪屏页(ScreenActivity)、主页(MainActivity)、登录页(LoginActivity)等以及其他页面。
    Android开发主页(MainActivity)的启动模式一般设置为:android:launchMode=“singleTask”,只有设置了这种启动模式才能更好的避免重复的启动主页面以及退出页面顺序异常的问题。

    2.实现过程

    先说下基本过程,A应用拉起B应用,从上面的实现方法某一个都可以实现,但是如果是A应用拉起B应用中的某个界面,但不是主页面,这时点击返回,直接跳出B应用来到A应用,很突然,对用户体验会有一定的影响。
    正确的实现过程,首先判断被拉起的B应用是否处于后台运行。1、没有处于后台运行,A应用正常拉起B应用的主界面,然后再通过A应用传递type值,再跳转到对应的B界面。这时返回的顺序是B(type对应的界面)—>B应用的主界面—>A应用的界面;2、处于后台运行,说明B应用已经被打开,处于后台运行模式,这时我们不可以走B应用启动主界面的逻辑了,如果执意要这样做,由于我们设置了主页的启动模式为android:launchMode=“singleTask”,那么在B应用栈中位于B应用主界面以上的界面全部都会出栈,我们设置主界面的启动模式为singleTask是为了更好的避免重复的启动主页面以及退出页面顺序异常的问题。所以我们可以直接启动Activity的管理工具类,在启动页获取栈顶的Activity,然后在栈顶的Activity的基础上启动type对应的界面,这时返回的顺序是B(type)对应的界面—>B应用之前打开的界面—>B应用的主界面—>A应用的界面。

    3.实现的方法

    我们通过Intent的隐式启动来拉起。
    隐式启动拉起第三方APP有三种方式:1、Package;2、Action;3、Uri(推荐)。

    • 首先判断我们拉起(跳转)的第三方APP是否存在
        public static boolean isApkInstalled(Context context, String packageName) {
                if (TextUtils.isEmpty(packageName)) {
                    return false;
                }
                try {
                    ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
                    return true;
                } catch (NameNotFoundException e) {
                    e.printStackTrace();
                    return false;
                }
            }
    
    • 不存在APP则让它跳转到应用商店
      /**
       * 启动到应用商店app详情界面
       *
       * @param appPkg    目标App的包名
       * @param marketPkg 应用商店包名
       */
       public void launchAppDetail(String appPkg, String marketPkg) {
          try {
              if (TextUtils.isEmpty(appPkg)) return;
              Uri uri = Uri.parse("market://details?id=" + appPkg);
              Intent intent = new Intent(Intent.ACTION_VIEW, uri);
              if (!TextUtils.isEmpty(marketPkg)) {
                  intent.setPackage(marketPkg);
              }
              intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              startActivity(intent);
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
    
    • 第一种方法包名拉起 ,关于B应用的处理方法,有Demo可以参考
    //A应用直接拉起B应用
    Intent intent = getPackageManager().getLaunchIntentForPackage("B应用包名");
                    if (intent != null) {
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                    }
    //拉起B应用的某个界面,我们可以传一个type值;当然如果知道你要跳转的Activity的类名
    也可以这样写。
    					Intent intent = new Intent();
                     	intent.setClassName("B应用包名", "B应用包名.Activity");
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
    
    • Action方式,需要在被拉起的B应用清单文件中启动页Activity添加以下配置
    //需要注意的不要在原来的基础上添加 
    <!--ACTION启动配置-->
                <intent-filter>
                    <action android:name="SHIQJ" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    A应用
                        Intent intent = new Intent();
                        intent.setAction("SHIQJ");//这个值一定要和B应用的action一致,否则会报错
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
    
    • URI方式拉起 B应用清单文件需要配置:
      在启动页(SplashActivity)清单文件增加如下配置:注意:不要在原有的intent-filter中增加代码,而是在原有intent-filter下方再增加一个intent-filter。
                <intent-filter>
                    <data
                        android:host="B应用包名最好"
                        android:path="/shiqj"
                        android:scheme="shiqj" />
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                </intent-filter>
    
    					Intent intent = new Intent();
                        Uri uri = Uri.parse("scheme://host/path");
                        intent.putExtra("", "");//这里Intent当然也可传递参数,但是一般情况下都会放到上面的URI中进行传递也就是"scheme://host/path?xx=xx"
                        intent.setData(uri);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
    

    切记:A应用拉起B应用的时候千万不要忘记添加:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    如果不添加这个启动模式,有时候返回顺序是混乱的:

    展开全文
  • 0. 前言 从Android手机打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的? 1. 系统上电当给Android系统上电,在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,CPU复位之后,程序...

    0. 前言  

    Android手机打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的?

     

    1.  系统上电

    当给Android系统上电,在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,CPU复位之后,程序指针会指向启动地址,从该地址读取并直接运行启动程序的可执行代码,或者将可执行代码与数据载入CPU内置的RAM中再运行。这一段代码,放在PC中,叫做BIOS,而在Android等嵌入式系统中就叫做Bootloader

     

    2.  Bootloader引导程序

    通过Bootloader引导程序,可以初始化硬件设备,建立内存空间映射图,为操作系统内核准备好环境,完成整个系统的加载启动任务。


     (Bootloader是支持交互式操作的,一般刷机中会用到的Fastboot模式,就是在Bootloader启动之后,根据用户输入的指令(在手机上用音量键,Home健等操作),停留在当前状态。)

    而正常情况下,Bootloader程序执行完成之后,就会开始加载Android操作系统

     

    3.  加载内核

    我们知道Android操作系统的内核其实就是Linux内核。当引导程序启动之后,就会进入Linux的内核引导阶段。该阶段会初始化内核和设备驱动,接着启动内核,挂载文件系统,最后启动用户空间进程

     

    4.  Init程序

    Init程序是用户空间的第一个进程

    它负责解析一个叫做init.rc的配置文件,启动Android系统底层运行的一些服务进程

    init.rc文件定义了不同的ActionService,其格式如下:

    //Action是以关键字on来定义的,紧接着的boot是一个触发条件
    //如下面的action表明当Android启动(boot)的时候,要做些什么事情
    // Action boot之后的class_start core等,是Init程序在开机时会启动的服务
    //这些服务包括ueventd, servicemanager, void, zygote,installd, ril-daemon等,我们一般称它们为守护进程
    on boot 
        ... 
        class_start core 
        class_start main 
     
    //Service是以关键字servie来定义的,紧跟着的是其名字和其启动的文件
    //如下会执行/system/bin/serviemanager文件,并将其命名为servicemanager
    service servicemanager/system/bin/servicemanager #声明一个service,而servicemanager则是其名字 
        class core                         #optioin, 该service属于core类 
         usersystem                         $option,该service属于System用户 
        group System 

    Init程序同时也会开启属性服务,存放一些关于Android系统的全局系统设置信息。

    最后,当所有的ActionService都启动完成之后,Init程序就会进入一个无限的循环,监听系统中发生的事件,对一些事件进行处理,比如重启某些服务等。

     

    5.  ServiceManager

    ServiceManagerInit程序启动的守护进程之一,它是AndroidBinder通信机制的基础

    ServiceManager提供了注册,检索服务的功能。即这些服务ServiceManager来统一进行管理。

     ServiceManager启动的过程做了三件事:

    1)通过open打开设备文件/dev/binder,把Binder设备映射到内核空间中,由于内核空间是所有进程共享的区域,所以借助这块区域,可以实现不同进程间资源的共享,从而达到进程间通信。

    2通过IO控制命令BINDER_SET_CONTEXT_MGR将当前进程注册到Binder驱动中,Binder驱动便会为他在内核空间创建一个Binder实体,并且将其句柄设置为0,从句柄值也能看出来,这个节点在Binder驱动中是唯一的,系统会将跨进程服务注册到它的服务列表里面,服务列表中存储的便是服务名字+这个服务在Binder驱动中的句柄

    3)最终ServiceManager也是会进入一个无限循环,等待客户端的IPC请求

     

    6.  Zygote

    Zygote也是由Init程序启动的其中一个服务,Zygote进程是Init进程fork()出的第一个横跨Java/C /C++的进程。


    6. 1  第一个虚拟机

    Zygote启动过程中会调用AndroidRuntime.cpp中的startVm方法来创建第一个虚拟机之后所有的Dalvik虚拟机都是由Zygote孵化出来的,这是因为Android中每一个应用都有着自己的进程,而每一个进程中都着一个Dalvik虚拟机,如果每起一个应用就创建一个虚拟机,效率太低,而通过复制Zygote,不仅可以提高创建的速度,还能够共享系统和框架的资源,可以大幅度提高应用程序启动的效率。


    6. 2  SystemService

    1)首先会创建一个socket

    2Zygote进程会孵化出一个子进程SystemService,我们大部分的系统服务比如ActivityManagerServiceWindowManagerService等都是该进程内的一个线程,这些服务会通过调用ServiceManager.addService方法添加到ServiceManager中的服务列表中,这样我们的系统服务就已经都注册到了ServiceManager里面了。
    ActivityManagerService启动后就会启动桌面应用,然后跟Zygote启动之初的Socket进行通信,告诉Zygote一切已经就绪。

    (3)Zygote知道已经启动成功,就开始进入一个无限的循环,在Socket上等待用户开启应用的请求到来。

    【JNI拓展】

    如果是通过System.loadLibrary(XX)把动态库加载到内存中,会调用dlopen()函数打开一个so文件,并调用 dlsym() 函数,查看相应so文件的JNI_OnLoad()函数指针,并执行相应函数。在该函数中通过一个gMethods方法,得到了记录的Java层和C/C++层方法的一一映射关系。

     

    至此,从Android手机上电的那一刻起,到加载内核,到最后显示Home桌面的整个过程就结束了。


    7.  APK的安装过程

    Android系统启动的过程中会启动一个应用程序管理服务PackageManagerService(系统启动的时候由SystemServer组件启动),这个服务负责扫描/system/framework、/system/app、/vendor/app、/data/app、/data/app-private五个目录下的APK文件,然后解析该APK中的AndroidManifest.xml以获得应用程序相关信息,其中最重要的就是依据sharedUserId这个配置来让系统确定每个APK运行在哪个进程。
    继而为这个APK分配Linux用户ID、用户组ID以便APK在系统中可以获取到合适的运行权限、资源访问权限。
    最后将之前获得的权限和APK安装信息保存到本地的一个配置文件中,以便下次在安装这些APK时可以将需要的APK信息很快速的恢复回来。


    8.  应用启动流程

    8.1  应用的冷热启动

    Android中的冷启动指当启动应用时,后台没有该应用的进程。这时系统会重新创建一个新的进程分配给该应用,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

    Android中的热启动指当启动应用时,后台已有该应用的进程(如按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),热启动就不会走Application这步了

     

    8.2  应用的启动流程

    1)点击桌面App图标,Launcher进程采用Binder IPCsystem_server进程发起startActivity请求;

    system_server进程接收到请求后,向Zygote进程发送创建进程的请求;随后Zygote进程fork出一个新的进程分配给该应用。

    2应用进程通过Binder IPCsytem_server进程发起attachApplication请求;system_server进程在收到请求后,进行一系列准备工作,再通过Binder IPC向应用进程发送scheduleLaunchActivity请求。

    3应用进程的Binder线程ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;主线程在收到Message后,依次创建和初始化Application类、创建MainActivity类、加载Activity的主题、配置Activity层级上的一些属性、再inflate布局、当onCreate/onStart/onResume方法都走完了后,最后进行contentViewmeasure/layout/draw显示在界面上,至此应用启动完成。后半段的启动流程如下:

    Application的构造器方法——>attachBaseContext()——>onCreate()——>Activity的构造方法——>onCreate()——>配置主题中背景等属性——>onStart()——>onResume()——>测量布局绘制显示在界面上

    可以通过adb shell命令的方式进行测量应用的启动时间:

    adb shell am start -W [packageName]/[packageName.MainActivity]


    8.3  启动优化建议

    1)在Application的构造器方法、attachBaseContext()onCreate()方法中不要进行耗时操作的初始化。

    2)对于MainActivity,在用户看到第一帧之前,需要进行测量、绘制布局,所以应该尽量减少布局的层次,考虑StubView的延迟加载策略,当然onCreateonStartonResume方法中也要避免做耗时操作

    (3)插入一个预加载画面,完成一些耗时操作,这样用户体验比较好。


    感谢:

    http://blog.csdn.net/linmiansheng/article/details/37728903

    http://blog.csdn.net/u010687392/article/details/50518343

    http://www.2cto.com/kf/201607/528367.html

    http://www.jianshu.com/p/0b0d6f684580

    http://www.tuicool.com/articles/YVbURfQ

    展开全文
  • android开机自动启动app

    千次阅读 2018-05-03 10:56:11
    经过多次尝试之后,终于找到了开机自动启动App的解决方法 开机后会停留在锁屏页面,且短时间内如果没有进行解锁操作,屏幕会进入休眠状态,所以启动APP时需要先唤醒屏幕和解锁屏幕 定义一个广播类...
  • H5网页启动APP

    千次阅读 2018-11-14 14:10:11
    功能需求描述:在手机端web页面点击一个按钮(或者a标签),...启动APP&lt;/a&gt;  &lt;/div&gt; Android端:  ​​​​​ //指定文档类型及编码格式,由系统已安装的解释器解析。  &lt;?...
  • Android App启动流程

    千次阅读 2017-02-28 12:34:51
    前言在使用Android手机时,我们总会启动各种各样的App以满足生活的各种需求,你是否想过,我们是怎样启动这些APP的?今天我将带着读者一起探索在Android系统中,一个App是如何被启动的。在开始分析之前,我们先回想...
  • 日程管理APP——TickTo

    千次阅读 2018-08-01 13:05:43
    日程管理APP——TickTo 功能介绍 今天档期:显示今日档期。 往期事件:显示今天之前的事务。 记录点滴:记录当天的日记,同时可以看往期的日记。 学习模式:可以选择开启白噪音模式。 设置:可以设置每天写总结...
  • 这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法。 首先说一下这样做的目的:最近博主在攻克一个技术难点,就是搞定某些三方系统中,对于应用权限的限制。为此给出用户指导,引导用户启动系统中的...
  • Android App启动流程详解

    万次阅读 多人点赞 2019-06-26 15:26:19
    前言:在之前的文章中已经写了apk的打包流程、安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程。经过今天的梳理以后咱们就可以对apk包是怎么编译生成的、apk是怎么被安装到安卓手机的、用户点击了桌面...
  •  intent2.setAction("miui.intent.action.APP_PERM_EDITOR");  intent2.addCategory("android.intent.category.DEFAULT");  intent2.putExtra("extra_pkgname", extra_pkgname);  a.startActivity(intent2...
  • Android启动流程、app启动原理

    千次阅读 2019-03-06 20:04:04
    Android 众多基于Linux内核的系统类似, 启动系统时, bootloader启动内核和init进程. init进程分裂出更多名为"daemons(守护进程)"的底层的Linux进程, 诸如android debug deamon, USB deamon等. 这些守护...
  • 深入理解iOS App启动过程

    万次阅读 多人点赞 2017-10-23 13:28:28
    本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间。准备知识Mach-O哪些名词指的是Mach-o Executable 可执行文件 Dylib 动态库 Bundle 无法被...
  • android-App启动过程

    千次阅读 2018-09-24 00:17:04
    APP启动流程涉及的类和调用的方法还是蛮多的,做为android应用开发其实知道整个流程和重要的调用方法就够了。但是在了解整个流程前,得先知道涉及的相关知识,这样才能更好理解后面整个流程。后面源码分析基于...
  • android开机自启动app

    万次阅读 2016-09-22 19:15:48
    android开机自启动app 转自:http://my.oschina.net/jgy/blog/135858 前言: 有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文...
  • 安卓开机自启动app,安卓开机启动自定义apk 亲测可用,实测可用,android studio设置开机启动 android开机启动app,android开机启动自己的app的方法: 1. 设置程序开机自启动是常用的功能,如何实现呢? 在 Android...
  • 启动淘宝APP为例:从用户点击淘宝APP的图标,到APP启动,其中大致可以分为7个步骤:第一部分 源码点击APP(淘宝),收集参数,通知AMS启动Activity:第一部分小结:收集到用户点击的 APP 的相关信息放入 intent,...
  • Appium+python自动化-启动app

    万次阅读 2017-12-05 11:33:16
    Appium+python自动化-启动app 环境已经搭建好了,接下来就是需要启动APP,如何启动app呢?首先要获取包名,然后获取launcherActivity。获取这两个关键东西的方法很多,这里就不一一多说,小伙伴们可以各显神通。...
  • 静态广播实现app启动

    千次阅读 2017-08-18 13:45:59
    android开机时会发送开机系统广播,通过对系统开机广播的监听可以简单实现app启动功能 广播的选择 广播分静态广播和动态广播。两者区别静态通过mainfest清单文件注册,即使app启动广播接收器也行之有效;动态...
  • Android 解决APP启动时出现白屏问题

    万次阅读 2018-07-24 16:49:01
    当我们首次启动APP时,再到APP的第一个页面展示出来之前,这段时间会有几秒的白屏或者是黑屏出现。这样给用户的体验是十分不好的。 2、问题出现的原因: 当我们在启动一个应用时,系统会检查是否已经存在这样一个...
  • Android启动App时白屏的解决方法

    千次阅读 2017-07-13 21:19:18
    前言在Android手机中,打开一个App,就会先展示一个白屏,然后才是进入欢迎页面。为什么会有白屏呢?白屏是什么首先我们要知道这个白屏是什么,才能去解决这个问题。我们知道Android中所有的视图都是通过Window来...
  • iOS App 启动性能优化

    千次阅读 2017-08-18 09:59:05
    本文来自于腾讯Bugly公众号(weixinBugly)...导语本文介绍了如何优化iOS App启动性能。本文分为四个部分: - 第一部分科普了一些和App启动性能相关的前置知识 - 第二部分主要讲如何定制启动性能的优化目标 - 第三
  • 启动Activity3.1 启动进程3.2 启动主线程3.3 创建Application3.4 创建Activity参考 1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,...
  • android开机自动运行APP实现方式其实很简单。...现在大多数的android手机系统都默认禁止第三方安装的APP开机自启动,只有系统APP(system/app)才默认有这个权限,所以一般都需要去安全中心或者手机管家中去设置为允许。
  • 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intentintent),在其中启动你想要启动的Service或app。   import android.content.BroadcastReceiver; import android.content....
  • Android面试题(31)-App启动流程

    千次阅读 多人点赞 2018-03-08 23:43:59
    在看这篇文章之前,希望先看完我的之前的博客 android面试(6)-Binder机制,因为关于App启动流程设计很多Binder通信; 先将“三个进程”,“六个大类”进行介绍: 三个进程: Launcher进程:整个App启动流程的...
  • 一键跳过 APP 启动广告

    千次阅读 2021-01-27 08:20:00
    不过需要在应用启动管理里关闭自动管理改为手动管理,否则总会被系统关闭。 最后分享个安卓APK提取器,手机中的绝版软件想分享给别人却找不到安装包?它可以直接提取apk安装包。 最近原创文章: 没有b站大会员怎么看...
  • ActivityThread的理解和APP启动过程

    万次阅读 多人点赞 2019-01-04 12:03:05
    ActivityThread的理解和APP启动过程 ActivityThread ActivityThread的初始化 主线程Looper的初始化 主线程Handler的初始化 ApplicationThread及Activity的创建和启动 APP启动 系统的启动过程 APP启动过程 APP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 328,292
精华内容 131,316
关键字:

启动管理app