我胡汉三又回来了!在结束了本科最后一门考试后,如愿来到鹅厂,赶在毕业正式入职前,先来实习感觉下工做氛围。如今刚结束了实习的第一周,按照习惯,如下是本周的知识清单: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,这里是腾讯全球新总部滨海大厦!