常見(jiàn)Android應(yīng)用調(diào)用的Android API排行榜

作者按

做為移動(dòng)應(yīng)用,調(diào)用系統(tǒng)API是必不可少的操作瞄沙。
那么己沛,在Android系統(tǒng)上,哪些API最受歡迎呢距境?

于是申尼,我隨便找了個(gè)應(yīng)用的榜單,對(duì)其中的top應(yīng)用做了一下統(tǒng)計(jì)垫桂。出于對(duì)知識(shí)產(chǎn)權(quán)的保護(hù)师幕,對(duì)于所有加密的模塊均未涉及。這個(gè)報(bào)告只是為了得出一個(gè)相對(duì)的排名诬滩,并不關(guān)心精確的數(shù)目霹粥。

研究方法:通過(guò)dexdump去反匯編應(yīng)用,統(tǒng)計(jì)invoke-static, invoke-direct, invoke-virtual, invoke-super中被引用的Android API的數(shù)目疼鸟。

Top 10應(yīng)用Android API調(diào)用排行

360安全衛(wèi)士

10大API調(diào)用:
看來(lái)360安全衛(wèi)士用的最多的是Binder IPC后控,用到了大量的Parcel。在Parcel中對(duì)于整數(shù)類型的應(yīng)用最多空镜,看來(lái)效率不錯(cuò)浩淘。
另外,非常重視字符串判空吴攒。

   1 void android.os.Parcel.recycle() : 2580
   2 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 1448
   3 android.os.Parcel android.os.Parcel.obtain() : 1290
   4 void android.os.Parcel.writeInt(int) : 1213
   5 int android.os.Parcel.readInt() : 1008
   6 void android.os.Parcel.enforceInterface(java.lang.String) : 878
   7 void android.os.Parcel.writeNoException() : 872
   8 void android.os.Parcel.writeInterfaceToken(java.lang.String) : 648
   9 void android.os.Parcel.writeString(java.lang.String) : 644
  10 void android.os.Parcel.readException() : 642

支付寶

支付寶的特色是對(duì)字符串相等的判斷用得多张抄,字符串判空更多⊥菡看來(lái)是有大量對(duì)于字符串做操作的業(yè)務(wù)邏輯署惯。
另外,支付寶喜歡用Log.v打日志镣隶。

top 10 API調(diào)用

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 8973
   2 boolean android.text.TextUtils.equals(java.lang.CharSequence,java.lang.CharSequence) : 2531
   3 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 1596
   4 android.view.View android.view.View.findViewById(int) : 1559
   5 void android.util.SparseIntArray.put(int,int) : 1363
   6 java.lang.String android.os.Bundle.getString(java.lang.String) : 1352
   7 int android.util.Log.v(java.lang.String,java.lang.String) : 950
   8 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 944
   9 android.content.res.Resources android.content.Context.getResources() : 942
  10 void android.view.View.setVisibility(int) : 860

酷狗音樂(lè)

top 10 API調(diào)用

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 5883
   2 android.view.View android.view.View.findViewById(int) : 3243
   3 void android.os.Parcel.recycle() : 3124
   4 void android.view.View.setVisibility(int) : 3001
   5 void android.widget.TextView.setText(java.lang.CharSequence) : 1966
   6 android.os.Parcel android.os.Parcel.obtain() : 1562
   7 void android.os.Parcel.writeInt(int) : 1426
   8 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 1384
   9 int android.os.Parcel.readInt() : 1315
  10 void android.os.Parcel.writeString(java.lang.String) : 1151

新浪微博

top 10 API調(diào)用

    1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 6516
    2 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 1786
    3 void android.widget.TextView.setText(java.lang.CharSequence) : 1517
    4 android.view.View android.view.View.findViewById(int) : 1394
    5 void android.widget.ImageView.setVisibility(int) : 1325
    6 void android.widget.TextView.setTextColor(int) : 1164
    7 void android.widget.TextView.setVisibility(int) : 1146
    8 int android.content.res.Resources.getDimensionPixelSize(int) : 1065
    9 android.content.res.Resources android.content.Context.getResources() : 962
   10 java.lang.String android.content.res.Resources.getString(int) : 845

微信

微信的特色是繪圖API用得多泽台。cubic和line的調(diào)用都有上萬(wàn)處。

top 10 API調(diào)用

   1 void android.graphics.Path.cubicTo(float,float,float,float,float,float) : 13642
   2 void android.graphics.Path.lineTo(float,float) : 9218
   3 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 3554
   4 android.view.View android.view.View.findViewById(int) : 3522
   5 void android.graphics.Path.moveTo(float,float) : 2829
   6 void android.graphics.Path.close() : 2752
   7 void android.widget.TextView.setText(java.lang.CharSequence) : 2510
   8 void android.graphics.Canvas.restore() : 2341
   9 void android.widget.TextView.setVisibility(int) : 2308
  10 int android.graphics.Canvas.save() : 2257

QQ

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 11211
   2 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 4365
   3 android.view.View android.view.View.findViewById(int) : 4171
   4 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 3915
   5 void android.widget.TextView.setText(java.lang.CharSequence) : 3577
   6 java.lang.String android.os.Bundle.getString(java.lang.String) : 3095
   7 android.content.Intent android.content.Intent.putExtra(java.lang.String,int) : 2666
   8 void android.widget.TextView.setVisibility(int) : 2612
   9 void android.view.View.setVisibility(int) : 2331
  10 void android.os.Bundle.putInt(java.lang.String,int) : 2301

UC瀏覽器

UC瀏覽器的特色是Layout用得多矾缓。

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 1259
   2 void android.widget.LinearLayout$LayoutParams.<init>(int,int) : 1128
   3 void android.widget.LinearLayout.addView(android.view.View,android.view.ViewGroup$LayoutParams) : 646
   4 void android.widget.FrameLayout$LayoutParams.<init>(int,int) : 538
   5 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 529
   6 void android.widget.LinearLayout.<init>(android.content.Context) : 522
   7 android.os.Message android.os.Message.obtain() : 430
   8 void android.widget.ImageView.setImageDrawable(android.graphics.drawable.Drawable) : 410
   9 android.content.res.Resources android.content.Context.getResources() : 401
  10 float android.content.res.Resources.getDimension(int) : 369

優(yōu)酷

    1 android.view.View android.view.View.findViewById(int) : 5991
    2 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 4599
    3 void android.widget.TextView.setText(java.lang.CharSequence) : 3488
    4 void android.view.View.setVisibility(int) : 2041
    5 void android.widget.TextView.setVisibility(int) : 1443
    6 void android.widget.ImageView.setVisibility(int) : 1441
    7 android.content.res.Resources android.content.Context.getResources() : 1351
    8 android.view.LayoutInflater android.view.LayoutInflater.from(android.content.Context) : 873
    9 void android.widget.TextView.setTextColor(int) : 860
   10 void android.view.View.setOnClickListener(android.view.View$OnClickListener) : 830

淘寶

與360安全衛(wèi)士在Parcel中Int用的多相比怀酷,淘寶更喜歡用String.

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 2480
   2 void android.os.Parcel.recycle() : 1452
   3 android.os.Parcel android.os.Parcel.obtain() : 724
   4 void android.os.Parcel.writeString(java.lang.String) : 675
   5 java.lang.String android.os.Parcel.readString() : 631
   6 void android.os.Parcel.writeInt(int) : 548
   7 int android.os.Parcel.readInt() : 454
   8 void android.os.Parcel.enforceInterface(java.lang.String) : 367
   9 void android.os.Parcel.writeInterfaceToken(java.lang.String) : 362
  10 void android.os.Parcel.writeNoException() : 352

wifi萬(wàn)能鑰匙

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 903
   2 android.view.View android.view.View.findViewById(int) : 420
   3 void android.widget.TextView.setText(java.lang.CharSequence) : 247
   4 java.lang.Object android.content.Context.getSystemService(java.lang.String) : 193
   5 java.lang.String android.content.Context.getPackageName() : 165
   6 android.content.res.Resources android.content.Context.getResources() : 143
   7 void android.view.View.setVisibility(int) : 142
   8 java.lang.String android.content.Context.getString(int) : 140
   9 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 125
  10 void android.content.Intent.<init>(java.lang.String) : 121

top 10 合計(jì)

Top我們總結(jié)一下:

  • TextUtils.isEmpty奪冠毫無(wú)疑問(wèn),在各應(yīng)用中都名列前茅嗜闻。
  • View.findViewById名列榜眼蜕依,說(shuō)明調(diào)用Android API最主要的操作還是操作控件
  • TextView.setText探花,說(shuō)明用得最多的控件還是最簡(jiǎn)單的TextView。TextView的setVisibility摘得第十名
  • 微信靠一己之力把兩個(gè)繪圖API送上榜样眠,但是其它應(yīng)用使用得不多
  • 剩下的位置全被IPC工具Bundle, Intent, Parcel占據(jù)友瘤。說(shuō)明了IPC對(duì)于Android應(yīng)用的重要性
    1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 44517
    2 android.view.View android.view.View.findViewById(int) : 20698
    3 void android.widget.TextView.setText(java.lang.CharSequence) : 14410
    4 void android.graphics.Path.cubicTo(float,float,float,float,float,float) : 13675
    5 void android.os.Parcel.recycle() : 11942
    6 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 11455
    7 void android.view.View.setVisibility(int) : 11233
    8 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 10585
    9 void android.graphics.Path.lineTo(float,float) : 9573
   10 void android.widget.TextView.setVisibility(int) : 9045

愛(ài)奇藝

   1 android.view.View android.view.View.findViewById(int) : 5200
   2 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 4773
   3 void android.widget.TextView.setText(java.lang.CharSequence) : 3134
   4 void android.widget.TextView.setVisibility(int) : 2239
   5 void android.view.View.setVisibility(int) : 1908
   6 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 1239
   7 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 1212
   8 void android.widget.ImageView.setVisibility(int) : 1188
   9 android.content.res.Resources android.content.Context.getResources() : 998
  10 java.lang.String android.content.Context.getString(int) : 928

高德地圖

高德團(tuán)隊(duì)是setOnClickListener的愛(ài)好者,有981處要設(shè)監(jiān)聽(tīng)檐束。

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 5738
   2 android.view.View android.view.View.findViewById(int) : 5531
   3 void android.widget.TextView.setText(java.lang.CharSequence) : 2426
   4 void android.view.View.setVisibility(int) : 1996
   5 java.lang.String android.content.res.Resources.getString(int) : 1407
   6 void android.widget.TextView.setVisibility(int) : 1277
   7 java.lang.String android.content.Context.getString(int) : 1052
   8 void android.view.View.setOnClickListener(android.view.View$OnClickListener) : 981
   9 android.content.res.Resources android.content.Context.getResources() : 883
  10 java.lang.String android.app.Application.getString(int) : 813

360瀏覽器

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 1874
   2 android.content.res.Resources android.content.Context.getResources() : 1056
   3 int android.content.res.Resources.getColor(int) : 985
   4 android.view.View android.view.View.findViewById(int) : 738
   5 void android.widget.TextView.setTextColor(int) : 662
   6 void android.os.Parcel.recycle() : 619
   7 void android.widget.TextView.setText(java.lang.CharSequence) : 506
   8 void android.view.View.setVisibility(int) : 406
   9 void android.widget.ImageView.setImageResource(int) : 403
  10 java.lang.String android.content.res.Resources.getString(int) : 399

阿里星球

阿里星球喜歡打log辫秧,這在前面的應(yīng)用中還沒(méi)有出現(xiàn)過(guò)。

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 2743
   2 void android.os.Parcel.recycle() : 652
   3 int android.util.Log.d(java.lang.String,java.lang.String) : 489
   4 void android.os.Parcel.writeString(java.lang.String) : 456
   5 java.lang.Object android.content.Context.getSystemService(java.lang.String) : 440
   6 int android.util.Log.e(java.lang.String,java.lang.String) : 439
   7 java.lang.String android.os.Parcel.readString() : 428
   8 java.lang.String android.content.Context.getPackageName() : 353
   9 void android.os.Parcel.writeInt(int) : 346
  10 android.os.Parcel android.os.Parcel.obtain() : 327

今日頭條

今日頭條看來(lái)對(duì)于顏色的體驗(yàn)上做得非常細(xì)致被丧,getColor和setTextColor竟然榜上有名盟戏。

   1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 2140
   2 android.view.View android.view.View.findViewById(int) : 1750
   3 void android.widget.TextView.setText(java.lang.CharSequence) : 977
   4 int android.content.res.Resources.getColor(int) : 920
   5 android.content.res.Resources android.content.Context.getResources() : 732
   6 void android.widget.TextView.setTextColor(int) : 722
   7 void android.view.View.setVisibility(int) : 589
   8 java.lang.String android.content.Context.getPackageName() : 581
   9 void android.widget.TextView.setVisibility(int) : 572
  10 java.lang.String android.os.Bundle.getString(java.lang.String) : 571

訊飛輸入法

   1 void android.os.Parcel.recycle() : 1946
   2 java.lang.String android.content.Context.getString(int) : 1336
   3 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 997
   4 android.os.Parcel android.os.Parcel.obtain() : 972
   5 void android.os.Parcel.writeInt(int) : 590
   6 android.view.View android.view.View.findViewById(int) : 546
   7 android.content.res.Resources android.content.Context.getResources() : 540
   8 int android.os.Parcel.readInt() : 510
   9 void android.os.Parcel.writeString(java.lang.String) : 507
  10 void android.os.Parcel.enforceInterface(java.lang.String) : 488

top 30匯總

    1 boolean android.text.TextUtils.isEmpty(java.lang.CharSequence) : 88868
    2 android.view.View android.view.View.findViewById(int) : 53920
    3 void android.widget.TextView.setText(java.lang.CharSequence) : 37610
    4 void android.view.View.setVisibility(int) : 26699
    5 void android.os.Parcel.recycle() : 21927
    6 void android.widget.TextView.setVisibility(int) : 21201
    7 void android.os.Bundle.putString(java.lang.String,java.lang.String) : 20039
    8 android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String) : 19306
    9 android.content.res.Resources android.content.Context.getResources() : 18536
   10 java.lang.String android.content.Context.getString(int) : 14956

從以上結(jié)果我們可以推斷:

  1. Java語(yǔ)言對(duì)于字符串判空的功能不好用,導(dǎo)致TextUtils.isEmpty被非常頻繁地調(diào)用甥桂。是否可以通過(guò)虛擬機(jī)層的修改柿究,通過(guò)指令來(lái)實(shí)現(xiàn)這個(gè)功能?
  2. xml布局的大量使用黄选,使View.findViewById(int)被大量使用
  3. TextView控制是最常用的控件蝇摸,TextView的方法有兩個(gè)上榜
  4. IPC調(diào)用在系統(tǒng)API調(diào)用中占有很大比例
  5. 最常用的資源是字符串
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市办陷,隨后出現(xiàn)的幾起案子貌夕,更是在濱河造成了極大的恐慌,老刑警劉巖民镜,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啡专,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡殃恒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)辱揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)离唐,“玉大人,你說(shuō)我怎么就攤上這事问窃『蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵域庇,是天一觀的道長(zhǎng)嵌戈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)听皿,這世上最難降的妖魔是什么熟呛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮尉姨,結(jié)果婚禮上庵朝,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好九府,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布椎瘟。 她就那樣靜靜地躺著,像睡著了一般侄旬。 火紅的嫁衣襯著肌膚如雪肺蔚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天儡羔,我揣著相機(jī)與錄音宣羊,去河邊找鬼。 笑死笔链,一個(gè)胖子當(dāng)著我的面吹牛段只,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鉴扫,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赞枕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了坪创?” 一聲冷哼從身側(cè)響起炕婶,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莱预,沒(méi)想到半個(gè)月后柠掂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡依沮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年涯贞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片危喉。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宋渔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜限,到底是詐尸還是另有隱情皇拣,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布薄嫡,位于F島的核電站氧急,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毫深。R本人自食惡果不足惜吩坝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哑蔫。 院中可真熱鬧钾恢,春花似錦手素、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至疹瘦,卻和暖如春崩哩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背言沐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工邓嘹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人险胰。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓汹押,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親起便。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棚贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容