鵝廠實(shí)習(xí)| 周記(三)

以下是本周的知識(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

c.ADB

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),非常感謝小哥哥們的耐心和建議~


性能優(yōu)化tips

隨著學(xué)生時(shí)代最后一個(gè)假期的結(jié)束,為期兩個(gè)月的短暫的實(shí)習(xí)生活也快結(jié)束了,還要回校準(zhǔn)備令人頭大的論文,預(yù)計(jì)最后還有一篇實(shí)習(xí)周記和一篇《Android Gradle權(quán)威指南》的讀書筆記,待七月畢業(yè)再回來(lái)就是有名分的鵝啦!


運(yùn)動(dòng)空間——第二條“腰帶”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容