am start_am start -n

       大家好,今天我想和大家分享一下我对“am start”的理解。为了让大家更深入地了解这个问题,我将相关资料进行了整理,现在就让我们一起来探讨吧。

1.begin和start的区别

2.汽车点火开关ACC,IG1,ST1,IG2,ST2分别是什么意思?

3.怎么计算android app启动时间

4.starts翻译成中文

am start_am start -n

begin和start的区别

       begin和start的区别

一、读音不同

       begin 英[bɡ?n] 美[bɡ?n]?

       start 英[stɑ?t] 美[stɑ?rt]?

二、释义不同

       begin

       v. 开始; 启动; 起始; ?

       start

       v. 开始; 启动, 发动

       n. 开头, 开端, 开始

三、词形变化不同

       begin第三人称单数:begins?现在分词:beginning?过去式:began?过去分词:begun

       start第三人称单数:starts?现在分词:starting?过去式:started?过去分词:started

四、用法不同

begin用作动词时,通常表示某个动作或过程的开始,例如:

       I willbegin my work at 9am.我将在上午9点开始工作。

用作名词时,通常指的是某个过程或事件的开始,例如:

       Thebeginning of the movie was really exciting.**的开头真的很激动人心。

start用作动词时,通常用于表示某个物体或活动的开始,例如:

       The concert will start at 7pm.音乐会将于晚上7点开始。

用作名词时,指的是某个物体或活动的开始,例如:

       The start of the race was delayed due to bad weather.由于天气不好,比赛推迟了开始。

五、双语例句

begin

       

       1、We?began?work?on?the?project?in?May.?

       我们于五月份启动了这项工程。

       2、Work?has?begun?on?the?construction?of?the?new?airport.?

       新机场的修建已经开工。

       3、Could?you?go?back?to?the?beginning?of?the?story

       你能不能回到故事的开头?

       4、The?project?is?beginning?to?show?results.?

       这项工程开始显出成效。

       5、I?was?beginning?to?think?you'd?never?come.?

       我开始以为你是不会来了。

start

       1、It?suits?me?to?start?work?at?a?later?time.?

       对我来说,最好晚一点再开始工作。

       2、Come?on!?It's?time?we?made?a?start.?

       快点!我们该出发了。

       3、Start?a?new?file?and?put?this?letter?in?it.?

       建立一个新档案,把这封信放进去。

       4、I?want?to?make?an?early?start?in?the?morning.?

       我想早上早点出发。

       5、We?started?work?on?the?project?in?2002.?

       我们于2002年开始干这个项目。

汽车点火开关ACC,IG1,ST1,IG2,ST2分别是什么意思?

        1.说明

        2.使用adb命令获取指定应用的包名和Activity名称

        3.使用adb命令启动/关闭APP

        4.使用adb命令把手机中的apk导到电脑上

        5.查看apk中的AndroidManifest.xml文件

        6.使用adb命令进行数据备份

        7.查看数据

        8.结语

        查看其它APP数据的前提是该APP默认开启数据备份,也就是allowBackup属性。

        想问一下大家在平时的开发中对应用的安全性有很在意么?有可能大家会想到加密、混淆、apk加固,但还有一些其他细节的东西需要大家去了解。今天就介绍一下android:allowBackup属性。这个属性在开发的过程中通常是默认开启的,Google起初是为了防止数据丢失,留下了这个功能,但是这个属性也容易造成一些隐私数据的泄露。如果你想关闭可以把它设置为false。那么这个属性在哪里设置呢,就在AndroidManifest.xml文件中的application标签中。

        要备份APP的数据,首先我们要知道这个APP的包名才可以进行备份。

        在手机或模拟器上面运行APP,然后输入命令:adb shell dumpsys activity top #

        这时会输出很多东西,你可以用查找功能Ctrl+F,找到TASK,下图红框中就是要找的包名

        命令:adb logcat| findstr START

        然后在手机或模拟器上点击你想要获取的应用,这时就会在cmd中出现相应的包名和类名了。

        启动APP的命令:adb shell am start -W -n package/activity

        命令窗口通过adb shell 进入android 的Linux命令界面,输入am help看到如下信息:

        它会展示出在不同场景下(比如start-activity、start-service等)不同参数代表的意义一些参数的意义,情况太多了这里就不细说了。

        回到正题,后面的package和activity就是上面获取包名第二种方法中提到的cmp,比如我们要启动谷歌地图:adb shell am start -W -n com.google.android.apps.maps/com.google.android.maps.MapsActivity

        在这里我们再做一个延伸,用命令做APP的冷启动和热启动操作,然后记录启动的时间

        我们看到上图中有三个数字ThisTime、TotalTime和WaitTime,这三个数字就是本次启动APP所花费的时间。

        热启动时退出退出APP的命令:adb shell input keyevent 3 ,这就相当于按了手机的home键,然后我们再执行启动APP的命令,这样就完成了热启动。

        我们看到热启动花费的时间比冷启动少了很多,一套冷、热启动的流程我们就走完了。接下来就看我们怎么去优化了,让它们变的更少。所以我们在平时做启动优化的时候可以把自己的APP和一些优秀的APP做一下对比看看还差多少。

        上面已经说过了一种退出APP的方法了,接下来这个命令是相当于杀掉当前的APP进程。

        命令:adb shell am force-stop package

        这时候再使用启动命令,就相当于冷启动了。

        有的时候我们在手机上查看和操作apk不是特别方便,而且通过文件管理找apk也很难找。接下来就介绍怎么用adb命令把手机中的apk导到电脑上。

        通过包名获取apk在手机中的存储路径,命令adb shell pm path package

        导出apk文件,到当前目录下

        命令:adb pull 路径

        这一步就要看一下apk中有哪些东西了,主要还是看一下AndroidManifest.xml文件当中的allowBackup设置。

        我平常用的方法就是吧apk文件的后缀该成zip,然后就可以看到里面的东西了。下面的是谷歌地图的apk的构成。

        下面来看一下AndroidManifest.xml文件,会看到都是乱码,但是关键的信息还是可以获取的,我们目前想要的就是下图红框中的allowBackup属性,像谷歌的APP肯定是把它设置成false的,所以我们没办法备份它的信息的。

        那么我们怎么看一个应用的allowBackup属性设置成true还是false呢,我的观察和实践出来的方法是看allowBackup后面有没有小方框,有就代表设置了true。如果有哪位大神知道好的可靠的方法还请留言告知。

        下面是其他apk中的AndroidManifest.xml文件,后面带了个小方框。

        在了解到APP可以备份之后,我们就可以开始做坏事了,哈哈。

        备份的命令:adb backup -nosystem -all -noapk -noshared -f data.ab package

        [-system | -nosystem] 是否备份系统

        [-apk | -noapk] 是否备份apk安装文件

        [-shared | -noshared] 是否备份手机存储空间

        -f *.ab 存档格式一定要是.ab

        package:包名

        在运行命令之后,手机或模拟器会出现一个页面要求你输入备份密码,这个密码你可以随便输入,但你要记住,在后面查看ab文件的时候会用到。

        输入密码,点击备份我的数据之后就开始备份了,备份完成之后会有提示,这时就是生产一个ab文件了。

        ab文件大家很少接触,这里使用abe工具(链接: /s/1NPbhtF1fyJcHOm1CXwi9Dg

        提取码:uns4 )解析ab文件 ,也是通过命令,把abe.jar和刚才生成的ab文件放到同一个文件夹中,然后运行命令:java -jar abe.jar unpack xxx.ab xxx.rar

        (如果不想使用命令可以看看这篇文章 /android/3639.html

        )

        这个命令就是吧ab文件解析成rar文件,这样就能解压了,我们就能看到里面的东西。解压出来大概就是下面这个样子。其中比较重要的是db文件夹和sp文件夹,里面的数据我就不放了,容易引起不必要的误会。你可以自己动手试试。

       

        写这篇文章还是提醒大家在平时的开发中要注重APP数据的安全问题,毕竟数据还是相当重要的。

        如果有哪里写的不对的地方,请指出,我会及时改正。

怎么计算android app启动时间

       点火开关四个档位,LOCK(关闭档),ACC(收音机档),ON(点火档),START(起动档)。

       锁车后钥匙会处于LOCK状态,此时钥匙门不仅锁住方向,同时切断全车电源。

       ACC状态是接通汽车部分电器设备的电源,如CD、空调等。

       正常行车时钥匙处于ON状态,这时全车所有电路都处于工作状态。

       而START档是发动机启动档位,启动后会自动恢复正常状态也就是ON档。

       IG2和IG2都是属于ON档。

starts翻译成中文

       事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开游戏和应用. 大家都知道,在Android中,游戏开发和应用开发是两码事.所以我们需要分开来说.

       1.1 应用启动

       我们平时在写应用的时候,一般会指定一个 mainActivity ,用户在桌面上点击这个 Activity 的时候,系统会直接起这个 Activity. 我们知道 Activity 在启动的时候会走 onCreate/onStart/onResume .这几个回调函数.

       许多书里讲过,当执行完 onResume 函数之后,应用就显示出来了…其实这是一种不准确的说法,因为从系统层面来看,一个 Activity 走完 onCreate/onStart/onResume 这几个生命周期之后,只是完成了应用自身的一些配置,比如 window 的一些属性的设置/ View 树的建立(只是建立,并没有显示,也就是说只是调用了 inflate 而已) . 后面 ViewRootImpl 还会调用两次performTraversals ,初始化 Egl 以及 measure/layout/draw. 等.所以我们定义一个 Android 应用的启动时间, 肯定不能在 Activity 的回调函数上下手.而是以用户在手机屏幕上看到你在 onCreate 的 setContentView 中设置的 layout 完全显示为准,也就是我们常说的应用第一帧.

       上面扯得有点远,不感兴趣的话可以不看,下面直接说方法.题主说的 adb shell am start -w packagename/activity,是可以完全应用的启动时间的.不过也要分场景.

       1.2 应用第一次启动

       也就是我们常说的冷启动,这时候你的应用程序的进程是没有创建的. 这也是大部分应用的使用场景.用户在桌面上点击你应用的 icon 之后,首先要创建进程,然后才启动 MainActivity.这时候adb shell am start -w packagename/MainActivity 返回的结果,就是标准的应用程序的启动时间(注意 Android 5.0 之前的手机是没有 WaitTime 这个值的):

adb shell am start -W com.meizu.media.painter/com.meizu.media.painter.PainterMainActivity

       Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.meizu.media.painter/.PainterMainActivity }

       Status: ok

       Activity: com.meizu.media.painter/.PainterMainActivity

       ThisTime: 355

       TotalTime: 355

       WaitTime: 365

       Complete

       总共返回了三个结果,我们以 WaitTime 为准.

       关于ThisTime/TotalTime/WaitTime的区别,下面是其解释:

       “adb shell am start -W ”的实现在 frameworks\base\cmds\am\src\com\android\commands\am\Am.java 文件中。其实就是跨Binder调用ActivityManagerService.startActivityAndWait() 接口(后面将ActivityManagerService简称为AMS),这个接口返回的结果包含上面打印的ThisTime、TotalTime时间.

       startTime记录的刚准备调用startActivityAndWait()的时间点

       endTime记录的是startActivityAndWait()函数调用返回的时间点

       WaitTime = startActivityAndWait()调用耗时。

       ThisTime、TotalTime 的计算在 frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java 文件的 reportLaunchTimeLocked() 函数中。

       我们来解释下代码里curTime、displayStartTime、mLaunchStartTime三个时间变量.

       curTime表示该函数调用的时间点.

       displayStartTime表示一连串启动Activity中的最后一个Activity的启动时间点.

       mLaunchStartTime表示一连串启动Activity中第一个Activity的启动时间点.

       正常情况下点击桌面图标只启动一个有界面的 Activity,此时 displayStartTime 与mLaunchStartTime 便指向同一时间点,此时 ThisTime=TotalTime。另一种情况是点击桌面图标应用会先启动一个无界面的 Activity 做逻辑处理,接着又启动一个有界面的Activity,在这种启动一连串 Activity 的情况下(知乎的启动就是属于这种情况),displayStartTime 便指向最后一个 Activity 的开始启动时间点,mLaunchStartTime 指向第一个无界面Activity的开始启动时间点,此时 ThisTime!=TotalTime。

       看到这里应该清楚 ThisTime、TotalTime、WaitTime 三个时间的关系了吧。WaitTime 就是总的耗时,包括前一个应用 Activity pause 的时间和新应用启动的时间;ThisTime 表示一连串启动 Activity 的最后一个 Activity 的启动耗时;TotalTime 表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用 Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。

       Event log中 TAG=am_activity_launch_time 中的两个值分表表示 ThisTime、TotalTime,跟通过 “adb shell am start -W ” 得到的值是一致的。

       最后再说下系统根据什么来判断应用启动结束。我们知道应用启动包括进程启动、走 Activity生命周期 onCreate/onResume 等。在第一次 onResume 时添加窗口到WMS中,然后measure/layout/draw,窗口绘制完成后通知 WMS,WMS 在合适的时机控制界面开始显示(夹杂了界面切换动画逻辑)。记住是窗口界面显示出来后,WMS 才调用reportLaunchTimeLocked() 通知 AMS Activity 启动完成。

       最后总结一下,如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime。

       1.2 应用非第一次启动

       如果是你按Back键,并没有将应用进程杀掉的话,那么执行上述命令就会快一些,因为不用创建进程了,只需要启动一个Activity即可。这也就是我们说的应用热启动。

       2 游戏启动场景

       游戏启动的话,就不适用用命令行的方法来启动了,因为从用户点击桌面图标到登录界面,既有系统的部分也有游戏自己的部分。

       2.1 系统部分

       游戏也有一个Activity,所以启动的时候还是会去启动这个Activity,所以系统启动部分也就是用户点击桌面桌面响应到这个Activity启动。

       2.2 游戏部分

       一般游戏的主Activity启动后,还会做一些比较耗时的事情,这时候你看到的界面是不能操作的,比如:加载游戏数据、联网更新数据、读取和更新配置文件、游戏引擎初始化等操作。从游戏开发的角度来看,到了真正用户能操作的界面才算是一个游戏真正加载完成的时间。那么这个时间,就得使用Log来记录了,因为加载游戏数据、联网更新数据、读取和更新配置文件、游戏引擎初始化这些操作,都是游戏自己的逻辑,与系统无关,所以得由游戏自己定义加载完成的点。

       对于游戏的启动时间,我们更倾向于计算从 点击桌面图标 到 用户可以与游戏进行交互 这个时间段作为一个游戏的启动时间。

       3 总结

       计算机最让人着迷的一点就是其准确性,1+1永远等于2,启动耗时多久就是多久,每一次可能不一样,但每一次的时间都是这一次的准确时间。

       不过每个公司由于对应用的定位不同,所以对应用启动的要求也不一样。比如有的做 ROM 的公司,其内置应用的启动时间一定是要非常快的,这样给用户的第一感觉就是快、流畅;互联网公司的 App 则不是很关心启动速度,大部分互联网公司的应用都有一个启动页,用来展示广告或者功能介绍之类的,然后才会进入到主界面。需求不一样,这么做也无可厚非,不过从消费者的角度来看,越早见到主界面当然越好。

       所以在做一个 Android App 的时候,一定要记得将应用的启动时间作为一个性能指标,毕竟

       天下武功,唯快不破!

       starts的中文翻译是“开始”。

如下:

1.“开始”作为动词使用

       当“开始”作为一个动词时,表示某个活动、事件或状态的开始。例如,“Themeetingstartsat9:00am.”(会议从早上9点开始),“Mydaystartswithacupofcoffee.”(我的一天从一杯咖啡开始)。

2.“开始”作为名词使用

       “开始”也可以作为名词使用,表示一个活动、事件或状态的起始点。例如,“Thestartoftheracewasdelayedduetbadweather.”(由于天气不好,比赛的开始被推迟了),“Let'sgobacktothestartandtryagain.”(让我们回到开始重新尝试)。

3.“开始”与其他词汇搭配使用

       “开始”还可以与其他词汇搭配使用,形成一个短语表示具体含义。例如,“getstarted”表示开始做某事,“startover”表示从头再来,“startup”表示开始运转。

4.“开始”的近义词和反义词

       “开始”的近义词包括“commence”、“initiate”、“embarkon”等。而“结束”则是“开始”的反义词,表示某个活动、事件或状态的结束。

5.“开始”的用法注意事项

       在使用“开始”这个词时,需要注意“开始”通常需要和一个时间、一件事情或一个事件搭配使用。在英文的口语中,“start”这个词经常被用作动词,表示开始做某事。在某些情况下,“start”可以作为名词使用,例如“thestartofthenewsemester”(新学期的开始)。

       好了,关于“am start”的话题就讲到这里了。希望大家能够对“am start”有更深入的了解,并且从我的回答中得到一些启示。