以下是本周的知識(shí)清單:
- RemoteViews
- PendingIntent
- JNI & NDK & ADB & AAPT
- 一點(diǎn)小感悟
1.RemoteViews
官方介紹:A class that describes a view hierarchy that can be displayed in another process. The hierarchy is inflated from a layout resource file, and this class provides some basic operations for modifying the content of the inflated hierarchy.
翻譯:一個(gè)描述視圖的類,該視圖可以在另一個(gè)進(jìn)程中顯示。構(gòu)造時(shí)需要制定一個(gè)layout資源文件,該類提供了一些基本的操作方法來(lái)修改所描述的視圖內(nèi)容。
a.作用:為跨進(jìn)程生成控件和修改控件屬性提供一系列方法
注意:RemoteViews只是實(shí)現(xiàn)了Parcelable 接口,嚴(yán)格講它并不是一個(gè)View,只是一個(gè)操作類
b.使用
- 構(gòu)造函數(shù):常用的構(gòu)造方法如下(包名,布局資源文件id)
public RemoteViews(String packageName, int layoutId) {
this(getApplicationInfo(packageName, UserHandle.myUserId()), layoutId);
}
- 常用方法:更多方法見(jiàn)開(kāi)發(fā)文檔
-
setTextViewText(int viewId, CharSequence text):設(shè)置TextView顯示的文字 -
setImageViewResource(int viewId, int srcId):設(shè)置ImageView顯示的圖片 -
setOnClickPendingIntent(int viewId, PendingIntent pendingIntent):設(shè)置View的監(jiān)聽(tīng)事件
-
c.應(yīng)用場(chǎng)景:具體步驟見(jiàn)5.1RemoteViews的應(yīng)用
- 通知:通過(guò)
NotificationManager#notify() - 桌面小部件 :通過(guò)
AppWidgetProvider
d.優(yōu)缺點(diǎn):
- 優(yōu)點(diǎn):使用傳統(tǒng)方式、RemoteViews方式實(shí)現(xiàn)跨進(jìn)程更新UI的對(duì)比,通過(guò)一次IPC可實(shí)現(xiàn)對(duì)多個(gè)View的操作,詳見(jiàn)Android神奇"控件"一一RemoteViews
- 缺點(diǎn):支持View類型如下,不支持它們的子類和其他類型的View,更無(wú)法自定義View
FrameLayout、LinearLayout、RelativeLayout、GridLayout、AnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView、AdapterViewFlipper、ViewStub
推薦閱讀:源碼分析見(jiàn)Android UI之跨進(jìn)程組件RemoteViews
2.PendingIntent
a.作用:是待定Intent,讓意圖在合適的時(shí)間再執(zhí)行,而不是立即執(zhí)行
b.常用構(gòu)造:
-
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags):打開(kāi)頁(yè)面 -
public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags):發(fā)送廣播 -
public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags):開(kāi)啟服務(wù)
c.參數(shù)描述:
-
context:上下文 -
requestCode:PendingIntent發(fā)送方的請(qǐng)求碼,一般設(shè)為0 -
intent:意圖,當(dāng)PendingIntent發(fā)生時(shí),效果與startActivity()、sendBroadcaset()、startService()一樣 -
flags:常見(jiàn)的類型如下-
FLAG_ONE_SHOT:描述的PendingIntent只能使用一次,之后會(huì)被cancel -
FLAG_NO_CREATE:若描述的PendingIntent不存在,直接返回null而不是創(chuàng)建 -
FLAG_CANCEL_CURRENT:若描述的PendingIntent已存在,則都會(huì)被cancel,之后再創(chuàng)建一個(gè)新的 -
FLAG_UPDATE_CURRENT:若描述的PendingIntent已存在,就都會(huì)被update
-
實(shí)例:Notification 通知
d.匹配規(guī)則:滿足內(nèi)部Intent相同且requestCode也相同,則兩個(gè)PendingIntent是相同的
3.JNI & NDK & ADB & AAPT
a.JNI
- 全稱:Java Native Interface,即Java本地接口,由Java提供
- 作用:用于Java與C/C++交互,即Java可以通過(guò)JNI調(diào)用本地的C/C++代碼、本地的C/C++的代碼也可以調(diào)用java代碼
b.NDK
- 全稱:Native Development Kit,是Android的一個(gè)工具開(kāi)發(fā)包,由Android提供
- 作用:用于快速開(kāi)發(fā)C、 C++的動(dòng)態(tài)庫(kù),并自動(dòng)將so和應(yīng)用一起打包成 APK
- 關(guān)系:在AndroidStudo上通過(guò)NDK實(shí)現(xiàn)JNI的功能
- 使用:官方:NDK入門指南
- 實(shí)戰(zhàn):Android:JNI 與 NDK到底是什么?(含實(shí)例教學(xué))
c.ADB
- 全稱:Android Debug Bridge,即安卓調(diào)試橋
- 作用:是一個(gè)命令行窗口,用于電腦端與模擬器或真實(shí)設(shè)備交互
- 命令:adb操作命令集合
- 應(yīng)用:adb命令打開(kāi)DDMS下的文件樹(shù)、DDMS下文件導(dǎo)出
d.AAPT
- 全稱:Android Asset Packaging Tool,即Android資源打包工具
- 作用:查看、創(chuàng)建、更新ZIP格式的文檔附件,將資源文件編譯成二進(jìn)制文件,存于SDK的build-tools目錄下,在build scripts和IDE插件時(shí)會(huì)使用這個(gè)工具打包apk文件構(gòu)成一個(gè)Android 應(yīng)用程序
- 命令:Android AAPT詳解
4.一點(diǎn)小感悟
近日最大的感受就是——年味不要太濃!年前年后那兩周一直都處于“人不齊”狀態(tài)、初八開(kāi)工以來(lái)收紅包收到手軟、到處品嘗同事從家鄉(xiāng)帶來(lái)的年貨、出去聚餐也有了“正當(dāng)”理由、元宵節(jié)的湯圓好好吃...進(jìn)來(lái)感受下開(kāi)工日的盛況~騰訊開(kāi)工刷紅包堪比“春運(yùn)",沙發(fā)板凳姜茶暖寶寶全上場(chǎng)
這周對(duì)我年前寫的代碼進(jìn)行了review,來(lái)了十幾個(gè)大佬,雖然提前做了準(zhǔn)備但是還是緊張,短短一個(gè)半小時(shí)真的學(xué)到很多,除了技術(shù)上的收獲,也給我今后再準(zhǔn)備類似會(huì)議提供一些啟發(fā),例如,在講代碼前要先交代好背景,不是所有人都清楚具體需求,減少解釋成本;演示大綱很有必要,但也要隨時(shí)準(zhǔn)備被提問(wèn)各種問(wèn)題、打亂節(jié)奏;最好走個(gè)完整流程來(lái)展示代碼邏輯,只看代碼的改動(dòng)部分很難被理解...總之第一次做review還是挺不錯(cuò)的體驗(yàn),非常感謝小哥哥們的耐心和建議~
隨著學(xué)生時(shí)代最后一個(gè)假期的結(jié)束,為期兩個(gè)月的短暫的實(shí)習(xí)生活也快結(jié)束了,還要回校準(zhǔn)備令人頭大的論文,預(yù)計(jì)最后還有一篇實(shí)習(xí)周記和一篇《Android Gradle權(quán)威指南》的讀書筆記,待七月畢業(yè)再回來(lái)就是有名分的鵝啦!
