当前位置:首页 > ZBLOG > 正文

安卓启动zblog(安卓启动器哪个好用)

今天给各位分享安卓启动zblog的知识,其中也会对安卓启动器哪个好用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Android 10.0 Activity的启动流程

本文主要学习记录,基于Android 10的源码,有错误欢迎指正,主要目的是梳理流程图。

以进程为单位的调用栈图如下:

1.activity中的startActivity方法最终都会通过拿到ATSM的代理IActivityTaskManager调用的startActivity;

2.之后进入system server进程中的ATMS startActivity,ATMS 经过收集Intent信息,然后使用ActivityStackSupervisor.startSpecificActivityLocked,如果进程已经存在,则直接使用realStartActivityLocked,通过App的binder客户端的代理ApplicationThread调用回到bindApplication,走入Activity的启动流程;如果进程不存在则通过socket链接Zygote,请求fork新的进程;

3.App进程创建完成后,进程启动会调用ActivityThread.main方法,初始化主线程Handler,接着走入attach方法,然后通过AMS的代理调用AMS的attachApplication方法,并将App进程的通信代理ApplicationThread传入AMS;

4.AMS获取到ATMS调用ApplicationThread的bindApplication回到App进程的ActivityThread.ApplicationThread.bindApplication方法中,然后使用Handler切换到主线程执行handleBindApplication,这里初始化了App的进程名字、时间,用户的硬件配置,包括App的文件系统,创建了App的Context实例,Instrumentation实例,调用App的onCreate回调方法,同时告诉AMS APP初始化工作完毕;

5.AMS接着会调用ATMS的attachApplication,最后调用ClientLifecycleManager的scheduleTransaction方法,通过App的Binder代理ApplicationThread回到ActivityThread;

6.进入ActivityThread.ApplicationThread.scheduleTransaction方法之后就进入了Activity的onStart、onResume回调

创建进程之前的过程主要是AMS的内部信息收集的判断的过程,下面主要看一下App进程启动的源码流程

从应用进程被创建开始,ActivityThread.main被执行

调用ActivityThread的attach方法,然后将activity和AMS通信的Binder代理IApplicationThread实例传入AMS

接着进入AMS进程,ActivityManagerService.attachApplicationLocked

1.thread.bindApplication :该方法主要讲App进程的配置信息通过IApplicationThread Binder通信回传到ActivityThread中

2.mAtmInternal.attachApplication :mAtmInternal实际就是ActivityTaskManager的实例,通过LocalServices加载

那么这里相当于走到了ActivityTaskManagerServer的attachApplication中

先看第一条:

注意:ActivityThread中存在于Binder通信的代理--》ApplicationThread extends IApplicationThread.Stub

ActivityThread--》ApplicationThread--》bindApplication

这里的bindApplication主要初始化了AppBindData,然后发送BIND_APPLICATION给APP的主线程BIND_APPLICATION,最后执行了handleBindApplication

handleBindApplication如下:

ActivityThread--》class H extends Handler

该方法主要在App进程中对App的一些硬件资源配置申请的属性、App的文件夹等完成App基本信息的初始化

接着看第二条:mAtmInternal.attachApplication

mAtmInternal.attachApplication最终会调用mRootActivityContainer.attachApplication(wpc)

RootActivityContainer.attachApplication

接着调用ActivityStackSupervisor.realStartActivityLocked开始创建Activity

ActivityStackSupervisor.realStartActivityLocked

创建ClientLifecycleManager和ClientTransactionHandler来辅助管理Activity的生命周期

注意

clientTransaction.addCallback是LaunchActivityItem

lifecycleItem是ResumeActivityItem

ClientLifecycleManager.scheduleTransaction最终会调用ClientTransaction的schedule方法

那么这个mClient是IApplicationThread的实例,那么此时也就回到了ActivityThread的ApplicationThread中

ActivityThread的ApplicationThread中

因为ActivityThread继承ClientTransactionHandler,所以到了ClientTransactionHandler中

通过Handler发送消息EXECUTE_TRANSACTION到H中

接着TransactionExecutor的execute方法

LaunchActivityItem.execute方法

client其实是在ActivityThread的实例,那么就回到了ActivityThread的handleLaunchActivity

接着调用performLaunchActivity

在performLaunchActivity中,主要是加载App的资源包,然后创建了Activity的context实例,并创建了Activity的实例,接着调用activity.attach方法,attach执行完之后调用了onCreate方法。

activity.attach

activity.attach中主要

1.创建了PhoneWindow实例

2.设置了Window接口的监听

3.初始化了成员变量,包括线程和WindowManager

到此Oncreate已经完成,那么OnStart和OnResume去哪了?

TransactionExecutor的execute方法

之前们只分析了executeCallbacks,接着executeLifecycleState方法

TransactionExecutor的executeLifecycleState方法

cycleToPath:lifecycleItem即为ResumeActivityItem

第一点:

int finish = lifecycleItem.getTargetState()

lifecycleItem对应ResumeActivityItem,如下:

ResumeActivityItem的getTargetState方法

对应ActivityLifecycleItem中的枚举类型:

第二点:ActivityClientRecord中的mLifecycleState,由于在前面已经执行了handleLaunchActivity所以mLifecycleState=1

对应ActivityLifecycleItem中的枚举类型:

PRE_ON_CREATE = 0

所以final int star = 1

接着看getLifecyclePath,此时start=1,finish=3

那么返回的IntArray就是2

接着看performLifecycleSequence

最终执行的是handleStartActivity所以最终走到了ActivityThread的handleResumeActivity

两点:

调用activity.performStart

调用Instrumetation.callActivityOnPostCreate

performStart方法:

调用了Instrumentation.callActivityOnStart方法:

最终到了activity的onStart方法

第二点:Instrumentation.callActivityOnPostCreate

上面主要走了cycleToPath,接着ResumeActivityItem.execute

调用了handleResumeActivity方法

handleResumeActivity最终调用performResumeActivity

调用了Instrumentation.callActivityOnResume,

到了activity.onResume()方法

参考文章:

安卓 怎么通过intent启动一个service 博客

第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {

//重写onReceive方法

@Override

public void onReceive(Context context, Intent intent) {

//后边的XXX.class就是要启动的服务

Intent service = new Intent(context,XXXclass);

context.startService(service);

Log.v("TAG", "开机自动服务自动启动.....");

//启动应用,参数为需要自动启动的应用的包名

Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);

context.startActivity(intent );

}

}

第二步:配置xml文件,在receiver接收这种添加intent-filter配置

receiver android:name="BootBroadcastReceiver"

intent-filter

action android:name="android.intent.action.BOOT_COMPLETED"/action

category android:name="android.intent.category.LAUNCHER" /

/intent-filter

/receiver

第三步:添加权限 uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /

安卓系统开机启动项

安卓系统关闭开机启动项的方法:

1、首先确保手机/平板电脑已经获取root权限,小编这里是使用百度一键root工具获取手机root权限的,打开百度一键root软件,然后在主界面触摸点击“开机自启动管理”。

2、打开开机自启动管理后,百度一键root工具会先扫描我们手机/平板电脑上安装的应用程序,并检查它们的开机启动状态。

3、扫描检查完系统安装的应用程序后,会列出我们手机/平板电脑的开机启动状态。

4、关闭开机启动项很简单,选择我们要关闭的开机启动应用程序,然后点击后面的蓝色有对勾的按钮,将其状态改变为灰色的,就表示以后开机这个应用程序就不会自动启动了。

安卓手机怎么打开开发者选项

相信很多朋友都想知道如何才能开启开发者选项,这样就能够为我们搞机提高更多选项,那么应该如何开启呢,一起来看看我的分享吧!

安卓手机怎么打开开发者选项 篇1

1、在待机页面下,点击【应用程序】;

2、点击【设定】;

3、点击【一般】,并点击【关于设备】;

4、向上滑动手机屏幕,连续点击【内部版本号】七次,直至提示"开发者模式已启用";

5、点击【】图标,即可看到【开发者选项】。

说明:该操作只需进行一次,开发者就会一直显示而不会再隐藏,如需隐藏该选项,请您备份手机中的重要数据,然后将其恢复出厂设定即可。(恢复出厂设定方法:【应用程序】-【设定】-【一般】-【重置】-【恢复出厂设定】。)

安卓手机怎么打开开发者选项 篇2

关闭蓝牙

想要安卓手机节省电量,首先要关闭的就是蓝牙。因为蓝牙要对外发送信息,所以当你开启它的时候,它就会不断消耗你的安卓手机电量,除了需要使用蓝牙的时候,一定要将它关闭,否则安卓手机的电池很快就会耗尽。

关闭自动同步

自动同步会在待机的情况下从网上即时地接收信息,对很多人来说都有大用处,但这同样也是一个电池杀手,因为自动同步需要不断地与互联网连接,这是非常消耗安卓手机电量的。如果你要想节省安卓手机的电池,就在用不到的情况下关闭它吧。

关闭wifi

不得不说,安卓手机绝大多数功能都是需要网络支持的,而wifi作为最廉价的上网服务形式,深受广大安卓用户的欢迎。然而在大多数情况下,wifi只有在家里或者是公司里才能用上,所以平时当你不想使用它的时候,就把它关闭吧,不然它会不断地扫描附近的wifi信号,平白浪费了许多安卓手机的电量。或者你也可以在设置里,wifi的高级设置中,选择‘屏幕关闭时休眠’,这样就能节省安卓手机的电量了。

关闭按键音,关闭触感反馈

只要进行操作,按键音和触感反馈就会被执行一次,或许一次消耗的电量并不多,但是操作次数多了积攒起来却不可忽视。况且这也不是什么有用的功能,考虑到要节约安卓手机的电量,建议还是关闭好了。

关闭震动

手机内置的微型马达工作的时候需要消耗相当大的电力,我曾经安装过一个利用手机震动来让手机变成按摩器的应用,结果没过多久就耗了一半的电量,相当恐怖。建议还是在有必要的时候开启吧,平时务必保持在关闭状态下。相信当你这么做之后,一定会发现你的安卓手机电量节省了很多。

降低屏幕亮度

有些人喜欢将电量调到最高,这样出门的时候屏幕会看得清楚一些,其实这样做并不可取。要知道,现在安卓手机都是大屏幕的,往往屏幕电源占了总消耗电量的50%以上,减少亮度能够极大地减少安卓手机电池的消耗。而且,当你在家里使用的时候,高亮度的屏幕反而会伤害到你的眼睛。我建议你,最好在桌面建立一个快捷的亮度调节按钮,这样当你出门的时候,按一下亮度调节按钮,就能调整亮度了,平时最好还是保持在最低亮度下。

关闭GPS

GPS可以为我们提供定位服务,但在日常生活中我们用到它的机会并不多,而它搜索卫星产生的消耗电量却是极多的。所以除了你在查地图定位自己所在位置的情况以外,都果断将它关闭吧。

不要总是开机关机

有的机友很纠结,为了节省半个小时的电量,总是开机关机,其实这并不能节省安卓手机的电量,因为每当你开机之后,手机都会开始加载软件,播放开机动画,这些都是消耗电量的大户。

尽量不要在信号弱的地方通话

现在安卓手机都很智能,信号弱的话,手机就会提高天线的'功率。这样不但手机辐射会增加,而且电池的消耗也会增加,所以平时最好在比较开阔的地方使用手机,尽量避免在诸如电梯,飞机,深山老林,异次元空间等地方使用。

省电利器飞行模式

想要节省安卓手机电量最有效最直接最简单的方法就是开启手机飞行模式,它会关闭一切网络连接活动,让你的手机进入‘守财奴’状态,平时睡觉前就开启飞行模式吧。

推荐使用官方ROM,省电ROM,避免使用超频ROM

超频是个好东西,它让游戏运行更加流畅,但对于很多人来说游戏只是附属品,并不能作为使用手机的主要目的,相比之下,待机时间更长更受欢迎。所以你大可使用官方ROM或者达人特意优化过的省电ROM,这会大大延长你的手机待机时间,达到节省安卓手机电量的目的。

不要使用动态桌面

有很多人为了让手机桌面变得很炫,就使用动态桌面,但你要知道,为了支持这张动态图片的播放,就会有大量的电池被消耗,假如你并不是一个视觉控,只是想向朋友炫耀,在平时还是老老实实地换回原来的静态桌面背景吧。

避免使用后台及内存的管理软件

如果你使用了这样的管理软件,当你查看电量消耗情况的时候就会发现,他们占用了至少10%的电量,而每当它们杀掉软件进程的时候都会重载,这样就会增加CPU的负担,造成安卓手机电池消耗过快。

关闭后台里活跃的非必要程序

很多软件当你退出后它依然会在后台驻留,并自动连接网络获取信息,这些都是电池杀手,你需要找出这些‘恶心’的软件,用过之后在后台里将它们手动关闭。

不要使用个性桌面软件

现在有很多诸如MIUI,点心之类的桌面定制软件,但你要知道,当你使用了这些软件后,后台就会同时运行两个桌面,这不但会让CPU运行速度下降,BUG出现次数平凡,而且对安卓手机电池无疑也造成了极大的负担。为了节省安卓手机电量,建议您还是不要安装桌面定制软件比较好。

安卓手机怎么打开开发者选项 篇3

adb驱动是安卓手机连接电脑的一个重要文件,全称是Android Debug Bridge,顾名思义起着调试的作用。因此正确安装adb驱动是至关重要。

先说说最简单的方法,就是找一个能够自动搜索adb驱动下载安装的PC端手机管理器,譬如安卓驱动,电脑上装好安卓启动之后,插上手机,等安卓驱动自动识别手机,完成驱动下载安装过程,你在一旁慢慢喝茶,直接看着就行。

其次就是手动的方法,买手机时候附带了驱动安装碟的将之取出,没有的在网上找到自己手中安卓手机的驱动下载站(HTC这些一般都会提供),然后将adb驱动下载到电脑。把手机用USB线连接至电脑,这时候电脑会提示你安装驱动,像安装电脑驱动一样,手动指定位置到adb驱动文件夹所在位置(CD或者刚刚adb驱动下载到的位置),等电脑自己安装完成,adb驱动也就成功安装了。

手动指定位置到adb驱动文件夹所在位置,按照提示安装。

另外一种也颇为简单的方法,就是下载一个豌豆荚,让它帮你安装,前提是先开启USB调试模式。

安卓手机怎么打开开发者选项 篇4

手机必备条件:

1、已获取ROOT权限

2、已安装文件管理器(RootExplorer)

步骤:

1、把你要替换的字体文件命名为“DroidSansFallback.ttf”

DroidSans.ttf(英文/数字常规)

DroidSans-Bold.ttf(英文/数字粗体)

DroidSansFallback.ttf(中文)

备注:假如你要替换英文部分,则将字体命名为“DroidSans.ttf”以此类推,简单明确的教程,请灵活运用。

2、把命名好的字体文件复制到内存

3、手机上打开文件管理器(RootExplorer)找到刚才复制的字体文件“DroidSansFallback.ttf”

4、将字体文件“DroidSansFallback.ttf”复制到手机内存的“system”目录

5、改字体文件的权限为“rw-r--r--”(即用户 可读可写打勾,群组 可读打勾,其他可读打勾)

6、把改好权限的“DroidSansFallback.ttf”剪切到“fonts”目录下替换源文件

7、重启手机

Android 启动流程

makeApplication创建application中会执行attachBaseContext(context);

installContentProviders第一个参数context,是从上面传递下来的app,也就是application。

遍历providers列表,初始化每一个provider,都是用application的context。构造出ContentProvider然后执行attachInfo() 方法,attachInfo()执行完毕会执行onCreate()。

最后再mInstrumentation.callApplicationOnCreate(app);执行Application的OnCreate方法。

总结

从流程上来看,符合日志打印的流程Application#attachBaseContext() → ContentProvider#attachInfo() → ContentProvider#onCreate() → Application#onCreate()

ContentProvider持有的Context也是application,具备给SDK初始化使用。

这时候第一进程是zygote。zygote英文是受精卵的意思。android系统的所有进程都是由zygote进程fork而来。zygote最先启动的第一个进程是鼎鼎大名的SystemServer进程。这个进程包含了我们常说的三个大神级系统服务,分别是ActivityManagerService,WindowManagerService以及PackegeManagerService。

进程入口在ActivityThread这个类的main()方法,这个main方法类似C语言的mian方法,是一个程序入口。

这个方法会接着调用ActivityManagerNatvie(一个单例类,可以获取ActivityManagerService的实例)的getDeafault()返回ActivityManagerService实例。

ApplicationThread是ActivityThread的内部类,他是App和系统跨进程交互的入口,它的实现类在客户端进程。

获得了正在Binder通信的客户端的当前线程的id,然后和ApplicationThread对象作为参数传入到AMS的attachApplicationLocked。

thread是ApplicationThreadProxy的对象引用,它是代理对象,先调用ApplicationThreadProxy的bindApplication方法,接着在这个方法中又调用ApplicationThreadNative的函数onTransact,然后函数onTransact中根据code找到对应的case,最终会调用ApplicationThread的bindApplication方法。

在这里,bindApplication方法通过向ActivityThread的消息队列发送BIND_APPLICATION消息

消息的处理调用handleBindApplication方法,handleBindApplication方法比较重要的是会调用如下方法

在执行完bindApplication()之后进入ActivityStackSupervisor.attachApplicationLocked(),这样我们整个应用进程已经启动起来了。开始activity的启动逻辑了。

这个类是一个AMS的一个栈管理类,里面存储着ActivityStack的集合。在这个方法,会遍历各个ActivityStack,找到前台栈,找到里面的TopActivity。然后比较 传进来的ProcessRecord.processName和UID是否个和opActivity对用的ActivityRecord里面的一致。如果一致,就调用ActivityStackSupervisor.realStartAcvitiyLocked(ProcessRecord,ActivityRecord)方法。

这个方法会调用传过来的ApplicationThread实例的ScheduelLaunchActivity(包括ActivityRecord)方法,所以真正执行的是ActivityThread中的scheduleLaunchActivity

这个方法是跨进程的,会把ActivityRecord同步到App进程的ActivityRecordClient数据结构,用来后面构造Application和Activity等。

ActivityThread接收到SystemServer进程的消息之后会通过其内部的Handler对象分发消息,经过一系列的分发之后调用了ActivityThread的handleLaunchActivity方法:

接着调用PerformLaunchActivity方法和HandleLaunchActivtiy()方法。performLauncherActivity,看名字应该就是执行Activity的启动操作了

1.这个方法主要是构造Application和通过mInstrumention.newActivity()构造Activity。

这个方法会初始化一个Window,以后详细讲,人格视图都是附在一个window的docorView上,然后由WMS.addView显示。

这个方法会调用Actiity的resume()方法,并且在makrVisible()里面调用WMS.addView(window),这个windows里面的docorView的contentView就是onCreate()里面setContentView(int layout)设置的contentView。

注意关于WMS.addView(window),这个系统服务,我们下次再讲,里面有一个类RootViewImpl,这个类负责管理我们contentView视图树的逐级绘制。

原文链接

安卓应用启动详解:从Zygote到你的Activity.onCreate()

翻译自:

这篇文章讲解当用户点击应用图标时,安卓如何启动你的应用。安卓系统做了很多幕后工作,来使得你的launch activity对用户可见。本文通过重要阶段的讲解和调用序列详细讲解这一过程。

安卓应用在这两个方面是独特的:

多个入口点 :Android应用程序由不同的组件组成,它们可以调用其他应用程序拥有的组件。这些组件大致对应于任何应用程序的多个入口点。因此,它们不同于具有像main()方法那样的单个入口点的传统应用程序。

拥有自己的小世界 :每个Android应用程序都生活在自己的世界中,它在单独的进程中运行,拥有自己的Dalvik VM实例,并分配有唯一的用户ID。

必要时会启动Android进程。

每当用户或其他系统组件请求执行属于您应用程序的组件(可能是服务,活动或意图接收器)时,Android系统都会为您的应用程序启动一个新进程(如果尚未运行)。通常,进程一直运行直到被系统杀死。应用程序流程是按需创建的,在您看到应用程序的启动活动启动并运行之前,发生了许多事情。

每个应用程序都在其自己的进程中运行 :默认情况下,每个Android应用程序都在其自己的Android进程中运行,而这个进程只不过是一个Linux进程,而该进程首先需要一个执行线程。例如,当您单击电子邮件中的超链接时,网页将在浏览器窗口中打开。您的邮件客户端和浏览器是两个单独的应用程序,它们分别在两个单独的进程中运行。click事件使Android平台启动新进程,以便它可以在其自身进程的上下文中实例化浏览器活动。这对于应用程序中的任何其他组件同样适用。

让我们退后一会儿,快速浏览一下系统启动过程。与大多数基于Linux的系统一样,启动加载程序在启动时将加载内核并启动init进程。然后,init会生成称为“守护程序”的低级Linux进程,例如android debug守护程序,USB守护程序等。这些守护程序通常处理低级硬件接口,包括无线电接口。

然后,初始化过程会启动一个非常有趣的过程,称为“zygote'。

顾名思义,这是其余Android应用程序的开始。这是初始化Dalvik虚拟机的第一个实例的过程。它还预加载Android应用程序框架和系统上安装的各种应用程序使用的所有常见类。因此,它准备进行复制。它统计侦听套接字接口上的将来请求,以产生新的虚拟机(VM)来管理新的应用程序进程。收到新请求后,它会分叉以创建一个新进程,该进程将获取预先初始化的VM实例。

zygote之后,init启动运行时过程。

然后zygote分叉以启动一个名为System server的托管良好的进程。系统服务器在其自己的上下文中启动所有核心平台服务,例如活动管理器服务和硬件服务。

此时,完整的堆栈已准备就绪,可以启动第一个应用程序流程-主页应用程序,该应用程序显示主屏幕(也称为启动器应用程序)。

click事件被转换为 startActivity(intent), 并通过Binder IPC路由到 ActivityManagerService 。ActvityManagerService执行多个步骤

如您所见,当用户单击图标并启动新应用程序时,许多事情发生在幕后。这是全图:

流程创建:

ActivityManagerService 通过调用 startProcessLocked() 方法创建一个新进程,该方法通过套接字连接将参数发送到Zygote进程。Zygote派生自己并调用 ZygoteInit.main() ,然后实例化 ActivityThread 对象并返回新创建的进程的进程ID。

默认情况下,每个进程都有一个线程。主线程有一个 Looper 实例来处理来自消息队列的消息,并且它在 run() 方法的每次迭代中都调用 Looper.loop() 。 Looper 的工作是从消息队列中弹出消息并调用相应的方法来处理它们。然后,ActivityThread通过随后调用 Looper.prepareLoop() 和 Looper.loop()来 启动消息循环。

以下序列详细捕获了调用序列:

figcaption class="jv jw di dg dh jx jy bo b fc cp ga" data-selectable-paragraph="" style="box-sizing: inherit; font-weight: 400; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 20px; margin-left: auto; margin-right: auto; max-width: 728px; font-size: 14px; color: rgb(117, 117, 117); margin-top: 10px; text-align: center;"Android应用启动:单击事件以执行Looper调用顺序/figcaption

应用程序绑定:

下一步是将此新创建的过程附加到特定应用程序。这是通过在线程对象上调用 bindApplication() 来完成的。此方法将 BIND_APPLICATION 消息发送到消息队列。该消息由 Handler 对象检索,该对象随后调用 handleMessage() 方法以触发特定于消息的操作 -handleBindApplication() 。此方法调用 makeApplication() 方法,该方法将应用程序特定的类加载到内存中。

下图描述了该调用序列。

figcaption class="jv jw di dg dh jx jy bo b fc cp ga" data-selectable-paragraph="" style="box-sizing: inherit; font-weight: 400; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 20px; margin-left: auto; margin-right: auto; max-width: 728px; font-size: 14px; color: rgb(117, 117, 117); margin-top: 10px; text-align: center;"Android应用启动:BIND_APPLICATION消息处理/figcaption

启动活动:

在上一步之后,系统包含负责应用程序的进程,并将应用程序类加载到进程的私有内存中。在新创建的流程和现有流程之间,启动活动的调用顺序很常见。

实际的启动过程从 realStartActivity() 方法开始, 该 方法在应用程序线程对象上调用 sheduleLaunchActivity() 。此方法将 LAUNCH_ACTIVITY 消息发送到消息队列。该消息由 handleLaunchActivity() 方法处理,如下所示。

假设用户单击“视频浏览器”应用程序。启动该活动的调用顺序如图所示。

figcaption class="jv jw di dg dh jx jy bo b fc cp ga" data-selectable-paragraph="" style="box-sizing: inherit; font-weight: 400; font-family: sohne, "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 20px; margin-left: auto; margin-right: auto; max-width: 728px; font-size: 14px; color: rgb(117, 117, 117); margin-top: 10px; text-align: center;"Android应用启动: LAUNCH_ACTIVITY消息处理 /figcaption

该活动通过 onCreate() 方法调用开始其托管生命周期。该活动通过 onRestart() 调用进入前台,并通过 onStart() 调用开始与用户进行交互。

关于安卓启动zblog和安卓启动器哪个好用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

取消
扫码支持 支付码