<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android開發(fā)中一些注意事項和遇到的問題(持續(xù)更新)

      1.LiveData使用:
      setValue()
      調(diào)用線程:setValue() 方法只能在主線程(UI 線程)上調(diào)用。如果你在其他線程(如后臺線程或工作線程)上調(diào)用它,會拋出異常。
      同步性:由于 setValue() 是在主線程上執(zhí)行的,因此它是同步的。這意味著它會立即更新 LiveData 的值并通知觀察者。
      postValue()
      調(diào)用線程:postValue() 方法可以在任何線程上調(diào)用,包括主線程和其他線程。這使得它在后臺線程中更新 UI 數(shù)據(jù)時特別有用。
      異步性:postValue() 不是立即更新 LiveData 的值。相反,它會將值放入一個隊列中,并在主線程的消息隊列中排隊一個消息,以便稍后在主線程上執(zhí)行。
      當(dāng)主線程處理這個消息時,它會從隊列中取出值并更新 LiveData,然后通知觀察者。因此,postValue() 是異步的。

      liveData沒setValue過值,獲取值會是null,postValue后需要在UI主線程getValue調(diào)用,防止crash.


      2.regiterListener和get調(diào)用順序。
      需要先regiterListener完再調(diào)用get,不然兩個調(diào)用中間消息會被漏掉。

      3.App權(quán)限的使用:(首先A app需要在manifest里將權(quán)限級別設(shè)置為normal)
      使用dumpsys package com.iauto.xxxx dump權(quán)限信息:
      A app已經(jīng)定義iauto.permission.XX的級別為normal,為何testApp B 追加<use permission>后 dump下來的權(quán)限還是如下:
      requested permissions:
      iauto.permission.xxxx
      install permissions:
      iauto.permission.xx: granted=false

      原因是需要需要重新安裝testApp來重新觸發(fā)權(quán)限
      --》
      先安裝A app,然后重新后安裝testApp

      4.BroadCast使用
      registerReceiver RECEIVER_NOT_EXPORTED和 RECEIVER_EXPORTED的區(qū)別
      所以當(dāng)一個廣播從系統(tǒng)廣播變?yōu)槠胀◤V播后,需要追加廣播權(quán)限,讓接收的模塊都配置為“Intent.FLAG_RECEIVER_EXPORTED”
      4.1. RECEIVER_EXPORTED(已導(dǎo)出)
      標(biāo)志:Intent.FLAG_RECEIVER_EXPORTED
      行為:
      接收器會被標(biāo)記為可被其他應(yīng)用訪問(相當(dāng)于在 AndroidManifest.xml 中靜態(tài)注冊時設(shè)置 android:exported="true")。
      其他應(yīng)用可以通過 sendBroadcast() 發(fā)送匹配的 Intent 到此接收器。
      適用于需要跨應(yīng)用通信的場景(例如系統(tǒng)廣播或自定義全局廣播)。
      風(fēng)險:
      如果接收器處理敏感操作(如權(quán)限驗證、數(shù)據(jù)修改),惡意應(yīng)用可能通過發(fā)送偽造廣播觸發(fā)接收器,導(dǎo)致安全漏洞。
      解決方案:確保接收器有適當(dāng)?shù)臋?quán)限檢查(如 android:permission),或僅在必要時導(dǎo)出。
      4.2. RECEIVER_NOT_EXPORTED(未導(dǎo)出)
      標(biāo)志:Intent.FLAG_RECEIVER_NOT_EXPORTED
      行為:
      接收器僅限當(dāng)前應(yīng)用內(nèi)部使用(相當(dāng)于 android:exported="false")。
      只有同一應(yīng)用的組件(如 Activity、Service)或具有相同用戶 ID 的應(yīng)用才能發(fā)送廣播到此接收器。
      系統(tǒng)廣播(如 ACTION_BATTERY_CHANGED)仍可被接收,因為系統(tǒng)本身有權(quán)限。
      適用場景:
      接收器處理應(yīng)用內(nèi)部邏輯(如后臺任務(wù)、狀態(tài)更新),無需與其他應(yīng)用交互。
      更安全,推薦默認(rèn)使用。

      5.ContentProvider的cursor.close確認(rèn)在每個分支都有調(diào)用,以及捕獲SQLiteException異常處理。

      posted @ 2025-04-30 12:19  代碼的搬運工  閱讀(84)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久中文字幕av第二页| 日韩精品中文字一区二区| 国产精品久久人妻无码网站一区| 精品国产粉嫩一区二区三区| 九九热在线免费观看视频| 国产在线乱子伦一区二区| 中文字幕色av一区二区三区| 国产熟睡乱子伦视频在线播放| 欧美日韩国产亚洲沙发| 亚洲男人AV天堂午夜在| 377人体粉嫩噜噜噜| 亚洲区综合中文字幕日日| 亚洲精品一区二区三区综合| 国产精品色内内在线观看| 十八禁日本一区二区三区| 免费人成再在线观看视频| 91热在线精品国产一区| 日本一道一区二区视频| 国产超高清麻豆精品传媒麻豆精品| 国内自拍偷拍福利视频看看| 一区二区亚洲人妻精品| 精品精品亚洲高清a毛片| 国产乱子伦视频在线播放| 国产精品白浆免费视频| 国偷自产一区二区三区在线视频| 国精产品999国精产| 久久婷婷五月综合色和啪| 国产旡码高清一区二区三区| 午夜一区二区三区视频| av在线中文字幕不卡电影网| 精品亚洲无人区一区二区| 亚洲一区二区精品另类| 国产精品女人毛片在线看| 国产精品无码不卡在线播放 | 国产亚洲av产精品亚洲| 国产99在线 | 亚洲| 国产福利姬喷水福利在线观看| 久久国产热这里只有精品| 日韩精品一区二区三区影院| 天天做天天爱夜夜爽导航| 亚洲精品日韩在线丰满|