我胡漢三又回來了!在結束了本科最後一門考試後,如願來到鵝廠,趕在畢業正式入職前,先來實習感覺下工做氛圍。如今剛結束了實習的第一週,按照習慣,如下是本週的知識清單:html
1.meta-data(元數據)java
a.做用:是一個鍵值對,用於幫助父組件存儲附加數據android
meta-data和strings的區別:api
- strings只能在應用內部被讀取
- meta-data是系統註冊的信息,系統及外界均可以獲取到meta-data配置的數據
b.位置:可包含在AndroidManifest中的<application>
、<activity>
、<activity-alias>
、<provider>
、<receiver>
、<service>
標籤下,以上組件元素可包含任意數量的<meta-data>
子元素安全
c.屬性app
<meta-data
android:name="string"
android:resource="resource specification"
android:value="string" />
複製代碼
android:name
:鍵名,惟一標識android:resource
:資源ID,經過Bundle.getInt()
獲取其值android:value
:鍵值,類型和獲取方法如圖:將資源ID指定爲
android:resource
、android:value
的值時區別:編輯器
- 將存儲在@string/kangaroo資源中的值分配給zoo名稱:
<meta-data android:name = "zoo" android:value = "@string/kangaroo" />
複製代碼
- 將數字ID分配給zoo名稱:
<meta-data android:name = "zoo" android:resource = "@string / kangaroo" />
複製代碼
d.使用:meta-data中的數據存儲於一個Bundle
對象中,可經過PackageItemInfo.metaData
字段來獲取ide
下面經過一個例子理解下,假設配置清單以下:gradle
<application
...
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="meta_act"
android:resource="@string/app_name" />
</activity>
<meta-data
android:name="meta_app"
android:value="testValue" />
</application>
複製代碼
對value、resource值的讀取方法以下:ui
//獲取value的方法,這裏經過getString獲取,結果爲testValue
private String getMetaDataFromApp() {
String value = "";
try {
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
Bundle bundle = appInfo.metaData;
value = bundle.getString("meta_app");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return value;
}
//獲取resource的方法,經過getInt獲取,結果爲id值
private int getMetaDataIdFromAct() {
int resId= 0;
try {
ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
Bundle bundle = activityInfo.metaData;
resId = bundle.getInt("meta_act");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return resId;
}
複製代碼
e.應用:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="USER-KEY" />
複製代碼
2.Gradle文件
一個Android Studio項目中有三個Gradle相關文件:
settings.gradle
:指定可被Gradle識別的Module,方法是include
//添加:app和:common這兩個module參與構建
include ':app',':common'
複製代碼
build.gradle
:整個Project的共有屬性,包括配置版本、插件、依賴庫等信息build.gradle
:各個module私有的配置文件更多Gradle知識後續會更新《Android Gradle權威指南》讀書筆記
3.compile & implementation
在Android studio版本3.0之後,有關第三方庫或module的依賴方式中,compile被棄用,而是由implementation替代。implementation相比於compile的好處有:
一句話就是:compile能夠依賴傳遞,而implementation不能夠。好比當前項目結構以下,在LibraryA中使用implementation依賴LibraryC,那麼App Moudle是沒法訪問到LibraryC提供的接口的,只能由LibraryA訪問到。
4.jar & aar
5.一點小感悟
或許是由於和鵝廠有過一些交集,來到這裏竟感受莫名的心安,這種微妙的心境用那句「我知道你會來,只是時間遲早」形容最合適不過了。
做爲一隻初來乍到的鮮鵝,沒啥見識,以爲鵝廠裏的一切都太讚了!很幸運在濱海大廈辦公,這真的是最最最理想的工做地了,豪華又智能,每一個細節都彰顯一種美,連空氣都是香甜的;還有超好吃的餐廳、超大氣的體育館,轉角遇到AI技術,吃喝玩樂應有盡有;工位真的很大,機器設備都是全新的(剛來看到工位上放着好幾個大箱子的時候我都驚呆了,萬萬沒想到還要作這種體力活);以及平常福利真的不要太多(尤爲遇上年末),搖身一變成壕鵝。
除了無敵的工做環境和資源,一塊兒共事的小夥伴也棒呆,技術強就不說了,保養好到看不出年齡,每日一問:大佬你工做多久了?除了顏值高,性格也好,尤爲組長簡直是活寶;工做氛圍也很好,你們老是學到廢寢忘食,處處都是技術討論的聲音,忍不住哀嚎我就是個大菜雞。
這幾日爲了快速熟悉業務,組長給我分了個BUG,可能由於項目體量不小了,可讀的文檔有限,看着大佬們忙前忙後的也不敢多打擾,就本身埋頭嚼代碼,最後導師都忍不住問我怎麼都沒問題,也服了本身這股傻勁,其實先問清楚業務邏輯再看代碼會快不少。
固然也會有頭疼的時候,好比資源太多、分佈又雜常常手忙腳亂,好比寫文檔的編輯器不太好使,好比更加清楚本身的菜,因此爲了能在鵝廠搬磚還要更努力纔是呀!
最後,再一次吹爆我大濱海,每次都忍不住拿起手機拍,但僅僅拍到其萬分之一的美,因而默默收起手機,心中慨嘆,這種美大概適合親自來體驗吧!附上官方介紹:Hi,這裏是騰訊全球新總部濱海大廈!