Android應用啟動耗時

2021-06-28 22:04:10 字數 1762 閱讀 4009

android應用啟動時間可以直接使用adb命令來獲取:

adb shell am start -w -n "應用包名"/"應用啟動activity名"

但是,很多時候我們無法獲知應用的包名和應用啟動的activity名。這時我們採用乙個比較穩妥的方式:

1. 獲取應用包名;

2. 獲取安裝包所在路徑;

3. 安裝包adb pull到本地;

4. aapt獲取啟動activity資訊;

5. 使用上面提到的adb shell am start命令獲取應用啟動時間.

當然以上的步驟不止需要我們有adb環境,還需要我們有aapt環境。這兩個環境的配置這裡不介紹了,主要記錄一下自己的實現過程:

1. 獲取應用包名:

adb shell pm list packages -f (會返回包名的列表,這裡暫記我們要的包名為"targetpack")

2. 獲取應用所在路徑:

adb shell pm path "targetpack" (會返回應用在手機中的存放路徑,暫記"mobilepath")

3. 將應用pull到本地路徑:

adb pull "mobilepath" "localpath" (這裡"localpath"是指本地路徑,應用拖到本地路徑)

4. aapt獲取應用啟動activity資訊:

aapt d badging "localpath + 應用名" | findstr "launchable-activity" (得到啟動activity,暫記為"launchactivity")

5. 測算啟動activity的啟動時間

adb shell am start -w -n "targetpack"/"launchactivity"

import os

#手機名稱通配

def extractdict(target):

mbool = (target.find("android") < 0) and (target.find("huawei") < 0) and (target.find("samsung") < 0) and (target.find("xiaomi") < 0) and (target.find("miui") < 0)

return mbool

#執行adb命令,返回結果

def adbcallback(cmd):

arr =

mrequest = os.popen("adb shell " + cmd)

for line in mrequest.readlines():

if (line.find("=") > 0) and extractdict(line):

head = line.index("=") + 1

end = line.index("\r")

line = line[head:end]

else:

pass

return arr

#對返回結果進行處理,選擇要啟動應用的包

def arredit(arr):

for i in range(0, len(arr)):

print(str(i) + ". " + arr[i])

tempint = -1

while(tempint<0):

tempint = int(input('\nplease input the number you wanna start:\n'))

if tempintto exit.')

Android 應用啟動速度優化

開發android應用中,隨著功能越來越多,啟動速度越來越慢。有沒有辦法讓自己應用啟動速度快一點呢?方法是人想出來的。先說說我的實現方法 1 將oncreate 中初始化的內容,移動到執行緒中做初始化,載入等 2 初始化完成之後,通過handler傳送訊息,3 hander 中收到訊息後,再初始化完...

android開機啟動某個應用

android 手機在開機或重新啟動的過程中會觸發乙個standard broadcast action,名字叫android.intent.action.boot completed,在這裡我們可以通過構建乙個廣播接收者來接收這個這個action,實現的步驟如下 1.首先建立乙個廣播接收者,如下 ...

Android 開機自啟動應用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!android啟動時,會發出乙個系統廣播 action boot completed,它的字串常量表示為 android.intent.action.boot completed 開機自啟動程式,只需要 捕捉 到這個訊息再啟動你的程式即可,我們要做...