最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Amadeus復(fù)刻計(jì)劃(App篇 四)

2022-10-10 23:50 作者:寂滅光-  | 我要投稿

項(xiàng)目中的理解難點(diǎn)——Intent:(示例代碼大部分為Amadeus項(xiàng)目源碼)

  1. 功能概述

    1. 可以實(shí)現(xiàn)應(yīng)用間的不同組件交互(如應(yīng)用內(nèi)跳轉(zhuǎn))或是不同應(yīng)用之間的交互(有的軟件可以調(diào)用系統(tǒng)瀏覽器,就是用的這個(gè))

  2. 使用方法(以實(shí)用為主,故不過(guò)多贅述參數(shù),詳情查文檔)

    1. 顯式調(diào)用:

      1. Intent intent = new Intent(LaunchActivity.this, MainActivity.class);
        startActivity(intent);

      2. 上文代碼意為從launchActivity跳轉(zhuǎn)至MainActivity(軟件中用于從啟動(dòng)界面跳轉(zhuǎn)至語(yǔ)音交互界面)

      3. 顯示調(diào)用基本就是這樣,很簡(jiǎn)單故不作贅述

    2. 隱式調(diào)用

      1. 顯式調(diào)用中明確指出了跳轉(zhuǎn)至哪個(gè)頁(yè)面(MainActivity),但有的時(shí)候我們并不需要這么做,比如調(diào)用瀏覽器訪問(wèn)網(wǎng)頁(yè),無(wú)論是哪個(gè)瀏覽器都能滿足需求,故只需要指定“瀏覽器”這個(gè)寬泛的概念即可,而不是必須使用“谷歌瀏覽器”(例)

      2. Intent?intent?=?new?Intent();

        intent.setAction("com.example.a3_30intent.action.MY_ACTION");

      3. 上面代碼即為隱式調(diào)用,其中setAction中的參數(shù)是一個(gè)字符串,該字符串內(nèi)容與安卓項(xiàng)目中的Manifest.xml相對(duì)應(yīng)(那個(gè)注冊(cè)activity的文件),需要被隱式調(diào)用的activity需要在其中加入<intent-fliter>標(biāo)簽,并在該標(biāo)簽內(nèi)設(shè)置action android:name屬性。實(shí)際上隱式調(diào)用所指定的setAction參數(shù)就是匹配的該name,當(dāng)然并不限于同應(yīng)用,如果知道其他應(yīng)用的name值,也可以調(diào)用該應(yīng)用的相應(yīng)組件

      4. 在本項(xiàng)目中隱式調(diào)用使用了一種變形,作者使用preference構(gòu)造了設(shè)置界面(用于選擇界面語(yǔ)言、設(shè)定鬧鐘等功能),其中點(diǎn)擊set up會(huì)跳轉(zhuǎn)至單獨(dú)的activity用于設(shè)定鬧鐘。其實(shí)現(xiàn)方式為在preference的框架下新建類似這樣的標(biāo)簽結(jié)構(gòu)

        <Preference android:title="@string/pref_alarm_setup">
        ? ?<intent
        ? ? ? ?android:action="android.intent.action.VIEW.ALARM"
        ? ? ? ?/>
        </Preference>

        其中intent標(biāo)簽就是實(shí)現(xiàn)隱式調(diào)用的方法,action的值為目標(biāo)activity,筆者第一次遇見(jiàn)的時(shí)候還頗為疑惑。

    3. PendingIntent

      1. PendingIntent可以視作是Intent的一種封裝,上面提到的調(diào)用intent的方法都是類似于“點(diǎn)擊即用”的方式,但如果你想要定時(shí)啟動(dòng)某服務(wù),或者滿足某種觸發(fā)條件再啟動(dòng)就不是很方便。于是PendingIntent就出現(xiàn)了,筆者的個(gè)人理解是PendingIntent是提前設(shè)定好滿足觸發(fā)條件后的行為(但此時(shí)并沒(méi)有調(diào)用),當(dāng)滿足一定條件后才開(kāi)始調(diào)用。

      2. 值得注意的是,定義PendingIntent時(shí)需要指定Flag參數(shù),而該參數(shù)會(huì)因安卓api版本不同而不同,更要命的是如果設(shè)置錯(cuò)誤應(yīng)用會(huì)直接閃退,難以排查,折騰了筆者許久,希望后來(lái)者注意。(api>31時(shí)為PendingIntent.FLAG_IMMUTABLE)

intent模塊筆者所使用到的大概就是上述這些,下文再略作討論下項(xiàng)目的消息通知機(jī)制(就是一般應(yīng)用的橫幅彈窗)

項(xiàng)目中的消息通知函數(shù)寫的基本沒(méi)有問(wèn)題,唯一需要注意的是安卓高版本需要指定NotificationChannel來(lái)自定義通知重要級(jí),當(dāng)然這也很合理,開(kāi)發(fā)者指定消息重要級(jí),然后交由用戶判斷是否接收該通知,可以有效治理流氓軟件的行為

ps:原項(xiàng)目中設(shè)定的鬧鐘響時(shí)發(fā)送消息與進(jìn)入啟動(dòng)頁(yè)面發(fā)送消息,這兩處的代碼有所不同,筆者修改為了與后者保持一致,應(yīng)該沒(méi)太大問(wèn)題。

pps:用兩臺(tái)電腦開(kāi)發(fā)數(shù)據(jù)遷移實(shí)在太麻煩,明天折騰下git同步,希望AS里面的設(shè)置不要太復(fù)雜……就這樣吧

? ? ? ? ?

????????????

Amadeus復(fù)刻計(jì)劃(App篇 四)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新泰市| 南投县| 永善县| 项城市| 墨江| 平潭县| 新昌县| 揭西县| 合川市| 金秀| 健康| 平原县| 恩施市| 怀宁县| 达州市| 寿阳县| 绵阳市| 墨玉县| 黔南| 滕州市| 余干县| 泸西县| 江油市| 永安市| 四子王旗| 兖州市| 杂多县| 泽普县| 邢台市| 宜春市| 武威市| 观塘区| 彭阳县| 错那县| 南康市| 名山县| 临夏市| 延安市| 兰州市| 阜新市| 河津市|