安卓中一些细节问题
Intent啟動(dòng)activity的幾種方法,如何實(shí)現(xiàn)?
A:顯示跳轉(zhuǎn),在可以引用到哪個(gè)類,并且可以引用到那個(gè)類的字節(jié)碼時(shí)可以使用。一般用于自己程序的內(nèi)部。顯示跳轉(zhuǎn)不可以跳轉(zhuǎn)到其他程序的頁面中。
Intent?intent = ?new Intent(this,xxx.class);
startAcitvity(intent);
B:隱式跳轉(zhuǎn),可以在當(dāng)前程序跳轉(zhuǎn)到另一個(gè)程序的頁面。隱式跳轉(zhuǎn)不需要引用到那個(gè)類,必須知道那個(gè)界面的動(dòng)作action和信息category。
打開瀏覽器為例:
Intentintent = new intent();
intent.setAction("android.intent.action.View"); ?設(shè)置動(dòng)作
intent.addCategory("android.intent.category.BROWSABLE"); 設(shè)置參數(shù)
intent.setData(uri.parse("www.baidu.com"));
startActivity(intent); 啟動(dòng)
什么是ANR,如何避免?
全名為(Application Not Response),應(yīng)用程序在有一段時(shí)間響應(yīng)不夠靈敏,系統(tǒng)會向用戶顯示一個(gè)對話框。
?用戶可以選擇等待讓程序繼續(xù)運(yùn)行,也可以選擇強(qiáng)制關(guān)閉。非常影響用戶的體驗(yàn)。
產(chǎn)生原因:1.在5秒內(nèi)沒有響應(yīng)輸出事件(例如:按鍵按下,屏幕觸摸)
? ?2.BroadcastReceiver在10秒內(nèi)沒有執(zhí)行完畢
? ?3.主線程執(zhí)行耗時(shí)操作
如何避免:不要在主線程里做耗時(shí)操作,而應(yīng)放在子線程中實(shí)現(xiàn),比如采用Handler+message的方式。和網(wǎng)絡(luò)交互的耗時(shí)操作就采用asyntask異步任務(wù)方式。
fragment和activity之間如何通信?
1.Fragment中通過getactivity進(jìn)行強(qiáng)制轉(zhuǎn)化,調(diào)用activity中的共有方法(不推薦會影響屏幕的適配)
2.activity在切換fragment的時(shí)候,通過setarguments向fragment傳遞參數(shù),fragment通過getarguments;獲得從activity中傳遞過來的值。
3.activity實(shí)現(xiàn)一個(gè)接口,fragment在onAttach方法中,將該activity轉(zhuǎn)化成接口,調(diào)用的時(shí)候回調(diào)
總結(jié)
- 上一篇: AIDL简介
- 下一篇: 安卓中的单例模式和工厂模式