Appå¤è¯è¨å®ç°
项ç®ä¸éå° åæ¢appè¯è¨ çéæ±ï¼è¦æ±å¨âç®ä½ä¸æâåâEnglishâ两ç§è¯è¨ä¹é´åæ¢é¨åæ§ä»¶çè¯è¨ææ¡ï¼ä¸åç³»ç»è¯è¨åæ¢çå½±åãTODO åæ¢ç³»ç»Configuration设置æºç åæ
TODO Androidèµæºç®¡çæºå¶
æç §Androidçèµæºç®¡çæ¹å¼ï¼æ们éè¦å¨resç®å½ä¸å»ºç«ä¸¤ä¸ªvaluesç®å½ï¼å ¶ä¸valuesæ¯é»è®¤çè·¯å¾ï¼values-enæ¯è±æèµæºçç®å½ã
é»è®¤æ åµä¸ï¼appå¯å¨ä¼æ ¹æ®ç³»ç»ç设置å 载对åºçèµæºï¼ç³»ç»åæ¢äºè¯è¨è®¾ç½®ï¼appä¹ä¼æ´æ°è®¾ç½®ï¼æ以è¿æ ·ä¸è½å®å ¨æ»¡è¶³æ们çéæ±ã
æ们ä¸æ³è¦appéçç³»ç»è¯è¨çæ¹åèæ¹åï¼èæ¯ä¿æç¨æ·ä¸ä¸æ¬¡çéæ©ãé»è®¤å®åç³»ç»ä¸ä¼ä¿çappçè¯è¨è®¾ç½®ï¼æ们éè¦æ¬å°è®°å½ä¸ä¸ç¨æ·çéæ©ï¼å¨appéæ°å¯å¨çæ¶åå è½½ä¹åä¿åçè¯è¨èµæºãåå¨ç¨æ·çéæ©æ¯è¾å®¹æï¼æ¾å°SharedPreferenceéå³å¯ãç¶åå¨appéæ°å¯å¨çæ¶åï¼æ们éè¦æå¨æ´æ°ä¸appçApplicationãActivityãFragmentåServiceæ¶å°çé 置信æ¯ã
以Activity为ä¾ï¼æ们å¨åºç±»çattachBaseContextæ¹æ³ä¸æ´æ°ä¿åæconfigä¿¡æ¯çContext对象ï¼
ConfigurationUtil.attachBaseContext(newBase) æ¹æ³ä¸æ´æ°newBase对象ï¼ä½¿å ¶ä¸ä¿åçLocale为æ们èªå®ä¹ï¼èéç³»ç»çãå½Activity被attachå°windowæ¶ï¼è°ç¨å°æ¤æ¹æ³ï¼ä¾¿ä¼å è½½æ们æ³è¦çèµæºãè¿æ¶å¦ææå¨ä¿®æ¹äºç³»ç»è¯è¨è®¾ç½®ï¼ç¶åä»ä»»å¡åå²ä¸ååæ们çappæ¶ï¼æ ä¸çææActivityä¼è¢«ç³»ç»ä¾ç §å±ç¤ºæ¬¡åºä¾æ¬¡éæ¯é建ï¼æ 顶被éæ¯é建ï¼éåºå°åä¸ä¸ªé¡µé¢æ¶ï¼åä¸ä¸ªé¡µé¢ä¼è¢«éæ¯é建ï¼ãç±äºActivity被éæ¯é建ï¼ä¼éæ°æ§è¡äºçå½å¨ææ¹æ³ï¼ActivityçattachBaseContextæ¹æ³ä¹å°±ä¼è¢«éæ°æ§è¡å°ï¼æ以系ç»çè¯è¨ä¿®æ¹åï¼æ们ä»ç¶å¯ä»¥æ£ç¡®å°å è½½å°æ们èªå·±è®¾ç½®çè¯è¨èµæºï¼æ以ä»è¡¨é¢ä¸ç并没æåå°ç³»ç»ä¿®æ¹çå½±åã
é常å®æ¹ä¹æ¯å»ºè®®æ们éå¯ææActivityçï¼è¿ä¹åä¼éæ¯æ§çèµæºæ°æ®ï¼éæ°å è½½æ°çï¼å®å ¨æ¹ä¾¿ã
å®æ¹æè¿°ï¼
å¦ææ们ä¸å¸æå¨ç³»ç»è¯è¨åçååæ¶éå¯Activityï¼éè¦å¨Manifest.xmlæ件ä¸é ç½®ï¼ android:configChanges="locale" å³å¯ã
è¿æ ·åä¹åæ们ä¼å¨éæ°åå°Activityçæ¶åï¼è¿å ¥åè°æ¹æ³ public void onConfigurationChanged(Configuration newConfig) { ... ä¸å»æ§è¡ãå ¶åæ°newConfig对象代表ææå½åé ç½®ï¼èä¸ä» ä» æ¯å·²ç»åæ´çé ç½®ã
éè¦æ³¨æï¼å½æ们修æ¹ç³»ç»è¯è¨è®¾ç½®åï¼ç³»ç»ä¼æ´æ°å½åææºä¸æææ£å¨è¿è¡çè¿ç¨éçææç»ä»¶ï¼åæå¨å¼ç¯çé¾æ¥éæ说æï¼ï¼æ以è¿ç§æ åµä¸å次åå°Activityï¼å¦ææ们å·æ°UIï¼UIä¼ä½¿ç¨ç³»ç»ç设置å è½½ç¸åºçèµæºæ件ãæ¯å¦ï¼
å设æ们app设置为äºç®ä½ä¸æï¼æ们å¨Applicationä¸ä¿åç¸åºçflagï¼æ¥å¤æç³»ç»çè¯è¨è®¾ç½®æ¯å¦åappç设置ä¸è´æè åçäºååï¼ï¼å¦æç³»ç»ç±ç®ä½ä¸æä¿®æ¹ä¸ºäºEnglishï¼å¦ææ们ä¸åä¸è¿°å¤çï¼å·æ°UIä¼å è½½è±æèµæºã
è¿å¹¶ä¸æ¯æ们æ³è¦çææï¼æ以æ们éè¦å¨onConfigurationChangedåè°ä¸ï¼å次æ´æ°Contextä¸çResources设置ãåæ³å¦ä¸ï¼
ä¸è¿°æ¹æ¡å¹¶éå®ç¾ç»å±é®é¢ï¼onConfigurationChangedæ¹æ³è°ç¨ä¹ågetResource()æå¯è½å°±ä¼è¢«è°ç¨å¤æ¬¡ï¼æ¶åºé®é¢ï¼å è½½åºä¾æ®ç³»ç»çè¯è¨è®¾ç½®çèµæºæ件ã(ã>︿<)_θï¼æ以ä¼æ4çå åºæ¹æ¡ã
TODO åæ¢è¯è¨å¹¶åå°appï¼ç¶åæ°å»ºfragment并addï¼ä¼æèµæºå è½½é误æ åµ
æ们å¨ActivityçonConfigurationChangedæ¹æ³æ´æ°è¿èµæºï¼è²ä¼¼è¿é没æèµ·ä½ç¨ãæç§æ´åçæ¹å¼ï¼
æä»¬å¨ getResources() æ¹æ³ä¸è°ç¨ ConfigurationUtil.updateResources(getResources()); ï¼ä½æ¯ getResources() æ¹æ³ä¼è¢«å¤æ¬¡è°ç¨ï¼æ¯æ¬¡è°ç¨ä¼å¤æä¸æ¬¡ï¼å¹¶ä¸æ¯ç¹å«çæ³ï¼ä¸è¿å¯ä»¥åæ¶å·æ°ï¼åæªæ¾å°æ´å¥½çæ¹æ³åä¹ç®æ¯ä¸ç§å åºçæ¹æ¡ã
å¨åæ¢çActivityä¸ï¼æ们æ好éå¯ä¸ä¸ææçappï¼æ§è¡ä¸æ¹æ¹æ³åï¼éæ°æå¼singleTaskçMainActivity...
å®åpreferenceåviewçåºå«
Androidä¸ï¼persistentäºpreferencescreenä¸å¯¹å¸å±çé¢çå¯æ§åé«ææ帮å©ï¼å ·ä½ä½ç°å¨ï¼1ãå¨Androidç³»ç»æºç ä¸ï¼ç»å¤§å¤æ°åºç¨ç¨åºçUIå¸å±éç¨äºPreferenceçå¸å±ç»æï¼èä¸æ¯å¹³æ¶å¨æ¨¡æå¨ä¸æ建åºç¨ç¨åºæ¶ä½¿ç¨çViewå¸å±ç»æï¼ä¾å¦ï¼Setting模åä¸å¸å±2ãFMRadioåºç¨ç¨åºä¸å使ç¨äºViewå¸å±ç»æ(å¯è½æ¯è¯¥åºç¨ç¨åºãå½æ ¹å°åºï¼Preferenceå¸å±ç»æåViewçå¸å±ç»ææ¬è´¨ä¸è¿æ¯å¤§åå°å¼ï¼3ãPreferenceçä¼ç¹å¨äºå¸å±çé¢çå¯æ§æ§åé«æç以åå¯åå¨å¼çç®æ´æ§(æ¯ä¸ªPreferenPreferenceceåå¨å¨ç¸å¯¹åºä¸çSharedPreferenceæ件夹ä¸)ã
深入底层原理,源码Android .0 Framework解析手册,源码模拟蓝牙鼠标源码在哪最新开源
在当前的源码Android开发领域,技术深度的源码体现主要依赖于对Android系统底层原理的理解。这不仅使我们能够深入掌握应用程序的源码行为,解决复杂问题,源码进行精准性能优化,源码而且还能在应用层面实现更多的源码创新。Android的源码armory3d源码底层结构主要由Framework构成,这是源码所有开发框架和系统设计的基础。如今,源码各大公司面试时,源码对Framework相关知识的源码考核成为了常规项目,如进程通信、夺宝战机红包版源码Handler的执行原理、Looper与线程间的关系、UI更新机制、ThreadLocal原理及其应用、SharedPreference的源码高质量商业工作机制与注意事项、Intent的原理、作用及参数传递等。
对于上述问题,你是否能够回答?为了帮助你更好地理解和掌握这些核心原理,我们整理了一份详细的最新乘风广告联盟源码《Android Framework源码》笔记,旨在用三天时间让你吃透Android Framework的精髓,为你的职业发展增添一份保障。此笔记不仅涵盖了系统启动流程、跨进程通信、Handler解析、AMS与WMS源码、Surface管理、PKMS、InputManagerService与DisplayManagerService等关键模块,还提供了Android.0版本的SurfaceFlinger源码解析,全方位覆盖Framework的核心知识点。
点击下方链接,即可免费获取这份详细笔记。掌握这些知识,将使你成为真正的高级Android开发者。技术的探索之路永无止境,对每一行代码、每个工具负责,深入挖掘其底层原理,是提升技术层次的关键。让我们一起在这个充满挑战与机遇的Android架构师之路上,不断前行。
2024-11-20 13:22
2024-11-20 13:13
2024-11-20 12:58
2024-11-20 12:00
2024-11-20 11:43