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 開機自啟動程式,只需要 捕捉 到這個訊息再啟動你的程式即可,我們要做...