【調(diào)試篇3】Android 應(yīng)用調(diào)試問題(執(zhí)行notifyChange延遲問題)

無論是任何類型的開發(fā)工作沟堡,出錯都在所難免,而錯誤報告對于找出和解決問題至關(guān)重要
https://source.android.com/setup/read-bug-reports?hl=zh-cn

本文記錄Android應(yīng)用調(diào)試問題柏锄,并將持續(xù)不斷更新

1趾娃、Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState

【解決方法】Fragment中的override fun onCreatePreferences方法參數(shù)savedInstanceState加上可空標(biāo)識耕突,如:savedInstanceState: Bundle?

2炕泳、java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView

【解決方法】參數(shù)convertView指定為非空的浙芙,實(shí)際為空了,將contentView:View改為contentView: View?

3、注冊ContentObserver,更新完數(shù)據(jù)庫放妈,執(zhí)行notifyChange延遲問題

【原因】在優(yōu)化MediaProvider的操作時托启,Google注意到許多后臺應(yīng)用注冊ContentObservers拐迁,當(dāng)發(fā)生改變進(jìn)行通知時疗绣,會影響相機(jī)應(yīng)用程序做持久重度操作例如:a burst capture线召。為了達(dá)到平衡割卖,將延遲邏輯移入到了ContentService鹏溯,僅將即時通知發(fā)送到前臺應(yīng)用肺孵,后臺應(yīng)用會延時10秒收到有關(guān)更改的消息。詳見google的修改記錄:https://android.googlesource.com/platform/frameworks/base/+/462062c91cc2bad6d289ded27d3d5d7b53e224fb%5E%21/#F0
【解決方法】
通過下面這筆可知紫新,https://android.googlesource.com/platform/frameworks/base/+/9d475e958df9ea0f558458de6629733d5b1fd3e1%5E%21/#F1,可以知道Google后續(xù)增加了flag解決此問題

final boolean noDelay = (key.flags & ContentResolver.NOTIFY_NO_DELAY) != 0;

只要noDelay返回true凤类,則不會延遲通知,而flags是notifyChange時透傳過來的现诀,此處更改flag為:

int flag = (syncToNetwork ? NOTIFY_SYNC_TO_NETWORK : 0) | ContentResolver.NOTIFY_NO_DELAY

即可讓通知不延遲

4夷磕、ActivityManager調(diào)用getRunningAppProcesses()無法獲取到當(dāng)前運(yùn)行App List

【原因】調(diào)用上述接口時,需要申請android.Manifest.permission.REAL_GET_TASKS 權(quán)限

boolean isGetTasksAllowed(String caller, int callingPid, int callingUid) {
        if (getRecentTasks().isCallerRecents(callingUid)) {
            // Always allow the recents component to get tasks
            return true;
        }
        boolean allowed = checkGetTasksPermission(android.Manifest.permission.REAL_GET_TASKS,
                callingPid, callingUid) == PackageManager.PERMISSION_GRANTED;
5仔沿、View 的 按鍵響應(yīng)延遲100ms坐桩,setPressed回調(diào)延遲100ms執(zhí)行的原因

【原因】View的onTouchEvent 可知,響應(yīng)Down事件時封锉,會取判斷當(dāng)前view的父view是否可滑動绵跷,如果可滑動膘螟,延遲100ms處理setPressed狀態(tài)

// Walk up the hierarchy to determine if we're inside a scrolling container.
boolean isInScrollingContainer = isInScrollingContainer();

// For views inside a scrolling container, delay the pressed feedback for
// a short period in case this is a scroll.
//判斷當(dāng)前父view是否可滑動
if (isInScrollingContainer) {
    mPrivateFlags |= PFLAG_PREPRESSED;
    if (mPendingCheckForTap == null) {
        mPendingCheckForTap = new CheckForTap();
    }
    mPendingCheckForTap.x = event.getX();
    mPendingCheckForTap.y = event.getY();
    postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout());
} else {
    // Not inside a scrolling container, so show the feedback right away
    setPressed(true, x, y);
    checkForLongClick(
            ViewConfiguration.getLongPressTimeout(),
            x,
            y,
            TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS);
}
break;

6、Long monitor contention with owner
7碾局、應(yīng)用本地實(shí)現(xiàn)的接口不會回調(diào)

【原因】系統(tǒng)與應(yīng)用解耦荆残,為了兼容Q與R版本,加了add-on-adapter層sdk適配净当,適配時接口未實(shí)現(xiàn)框架的接口内斯,故應(yīng)用實(shí)現(xiàn)的接口類型是add-on-adapter中的,framework中執(zhí)行的代碼接口類型是add-on中的蚯瞧,類型不一致嘿期,判斷有問題導(dǎo)致不會回調(diào)。

8埋合、Binary XML file line #38 in com.android.contacts:layout/item_group_membership

布局文件未設(shè)置為public

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末备徐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甚颂,更是在濱河造成了極大的恐慌蜜猾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件振诬,死亡現(xiàn)場離奇詭異蹭睡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赶么,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門肩豁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辫呻,你說我怎么就攤上這事清钥。” “怎么了放闺?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵祟昭,是天一觀的道長。 經(jīng)常有香客問我怖侦,道長篡悟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任匾寝,我火速辦了婚禮搬葬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艳悔。我一直安慰自己踩萎,他們只是感情好脾还,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布忙厌。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叶眉。 梳的紋絲不亂的頭發(fā)上盛垦,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天绘面,我揣著相機(jī)與錄音涣楷,去河邊找鬼。 笑死勿璃,一個胖子當(dāng)著我的面吹牛擒抛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播补疑,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歧沪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了莲组?” 一聲冷哼從身側(cè)響起诊胞,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锹杈,沒想到半個月后撵孤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竭望,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年邪码,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咬清。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闭专,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旧烧,到底是詐尸還是另有隱情影钉,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布粪滤,位于F島的核電站,受9級特大地震影響雀扶,放射性物質(zhì)發(fā)生泄漏杖小。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一愚墓、第九天 我趴在偏房一處隱蔽的房頂上張望予权。 院中可真熱鬧,春花似錦浪册、人聲如沸扫腺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笆环。三九已至攒至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躁劣,已是汗流浹背迫吐。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留账忘,地道東北人志膀。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像鳖擒,于是被迫代替她去往敵國和親溉浙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容