android项目学习心得(全源导航)
1、acitivity的跳轉(zhuǎn),返回上一個界面是結(jié)束當前界面,而不是從當前界面去跳轉(zhuǎn)前一個界面(即將前一個界面創(chuàng)建了一遍),概念要理清,具體寫法由隱式和顯式多種寫法。像這種操作UI界面,可以多使用fragment,就像看新聞點擊一層層推送新聞,每次退回都是返回前一個瀏覽的新聞。
2、寫Android代碼的時候,也要注意java中空指針問題,空指針就是在棧中聲明了一個對象,但是并沒有在堆中實例化,要先if-else判斷下傳參操作的對象是否為null。
在一些轉(zhuǎn)換(強制)類型的代碼里,最好也要用try-catch進行異常判斷(比如接口和類相互轉(zhuǎn)化),如果轉(zhuǎn)換失敗最好再拋出異常,便于檢查代碼。
?
在acticity里直接對activity內(nèi)容進行操作,最好不要定義activity,而是使用官方getActivity()更加安全。
?3、對于activity的生命周期的理解,這一塊比較重要,在寫控件注冊和取消注冊的時候,要確定activity激活和銷毀的時候,哪個函數(shù)在棧頂,用CSDN模板不一定次次都行的通。這個和activity的啟動方式有關(guān),除了singleInstance(類似支付寶頁面,不能再創(chuàng)建新的支付界面,只能用棧中唯一的那個支付界面),其他三種用的最多,當然根據(jù)情況如果沒必要使用太多內(nèi)存,還是用標準的啟動方法比較好。
4、app運行閃退,看Manifest里面有沒有注冊活動,自定義activity有時候會沒有自動注冊;也可以將Manifest里面啟動intent賦給出問題的activity,如果沒有閃退,考慮前一個activity的layout有沒有注冊準確或者跳轉(zhuǎn)語句有沒有寫錯跳轉(zhuǎn)對象的類,如果閃退了則是該activity出現(xiàn)問題,先檢查layout,然后看看是不是有空指針異常,從而進行異常判斷操作。還有一種情況就是權(quán)限有沒有給全,在開發(fā)定位,網(wǎng)絡(luò)資源的時候,要打開網(wǎng)絡(luò)權(quán)限以及其他廠家SDK里的相關(guān)權(quán)限。
5、再學習了接口之后,發(fā)現(xiàn)Android上按鈕等控件的點擊觸發(fā)事件,實際上是創(chuàng)建接口的匿名實現(xiàn)類的匿名對象,這樣做方便。
Android里:
?
捕獲的時候,若方法形參里面含有回調(diào)函數(shù),建議使用匿名類對象。
6、?當ros系統(tǒng)執(zhí)行命令roscore無法啟動,并且發(fā)現(xiàn)報錯是無法連接本地服務(wù)器,這時候要去修改bashrc文件里的ROS_HOSTNAME ?和 ROS_MASTER_URI一致即可。(?hostname是主機名,用于在系統(tǒng)上標識一臺機器; IP地址(聯(lián)網(wǎng)后分配的URI)是在TCP/IP網(wǎng)絡(luò)中唯一標志一臺機器)。
7、使用try-catch-finally處理編譯時異常,是得程序在編譯時就不在報錯,但運行時仍可能報錯,相當于我們使用try-catch-finally將一個編譯時可能出現(xiàn)的異常,延遲到運行時出現(xiàn)。
8、Android里的服務(wù)service和普通activity的一個顯著區(qū)別是當跳轉(zhuǎn)到service界面時,即使退出也可以繼續(xù)運行服務(wù)里的程序,類似嗶哩嗶哩后臺視頻播放功能。而bindservice是隨著activity的關(guān)閉而關(guān)閉。應(yīng)用程序是一個默認的單線程單任務(wù)的程序,不能去阻塞UI線程,不能在UI線程外訪問UI組件。同步線程處理類似于打開一個網(wǎng)站要有進度條顯示,而異步就是微博中點擊收藏,只需要告訴用戶是否收藏成功,不需要特地等待。在開發(fā)過程中可以將顯示的進程放進UI進程,而那些費時的進程則可以放進自己定義的進程。
9、線程里的sleep函數(shù)可以強制線程阻塞,這讓我想起了本科同學玩王者榮耀,同學a用的是oppor9,同學b用的是華為,a喜歡用刺客類型的英雄,在地圖漫游的時候游戲不卡,一旦組團開大就會變卡,硬件系統(tǒng)著實會對軟件發(fā)揮性能造成影響,但在時期不長的更新的情況下,也不排除工作人員對英雄的大招進程周期故意加了sleep函數(shù),然后和游戲方有利益關(guān)系的手機廠商借此推出新機型,讓游戲識別新機型調(diào)出沒有sleep的進程,造成手機性能好的假象。
10、異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。
當JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯誤表示為一個異常。
違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。
11、首先明確導(dǎo)航的基本概念:檢測和控制載體從一個地方移動到另一個地方的過程。常用的坐標系有日心坐標系、地球坐標系、地理坐標系等。對于地球,地心坐標系和地球坐標系是相似的,他們的區(qū)別在于地心慣性坐標系的原點不轉(zhuǎn)動,而地球坐標系與地球固連,隨地球一起轉(zhuǎn)動。對于載體,載體的航向角、橫滾角、俯仰角是很重要的參數(shù),機體坐標系一般采用地理坐標系,即原點在載體重心,x軸水平向東、y軸與當?shù)刈游缇€一致、z軸指天向上,這就是東北天坐標系。
基本的坐標變換按照z-x-y軸旋轉(zhuǎn),變換矩陣按哪個軸旋轉(zhuǎn),哪個軸為1,例如姿態(tài)變換矩陣,還有位置變換矩陣,在求解位置矩陣的時候可以將矩陣中的角度計算公式簡化為9個變量,再用三角函數(shù)求解,并且由速度矩陣進行微分可以求得速率矩陣,前提是進行初始對準,即當?shù)匚恢靡阎?/p>
地球是一個梨狀的橢球,有四個比較重要的線,l1:地心垂線、l2:引力垂線、l3:地理垂線、l4:重力垂線。
?12、Java通過面向?qū)ο蟮姆椒ㄟM行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5個關(guān)鍵詞來實現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
用try來指定一塊預(yù)防所有"異常"的程序。緊跟在try程序后面,應(yīng)包含一個catch子句來指定你想要捕捉的"異常"的類型。
throw語句用來明確地拋出一個"異常"。
throws用來標明一個成員函數(shù)可能拋出的各種"異常"。
Finally為確保一段代碼不管發(fā)生什么"異常"都被執(zhí)行一段代碼。
可以在一個成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)內(nèi)部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。
13、error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況
????exception 表示一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況
14、加速度計測得其實是比力,在地心慣性坐標系中,加速度等于引力矢量與比力之和,比力,通俗講就是載體相對慣性空間的絕對加速度和引力加速度之差,這個量對于姿態(tài)矩陣計算很重要,體現(xiàn)在,由比力(機體)推出比力(導(dǎo)航)推出速度推出角速度推出姿態(tài)微分矩陣最后得出姿態(tài)矩陣,由此得到橫滾、俯仰、偏轉(zhuǎn)角,同理還可以得出導(dǎo)航位置信息。
15、捷聯(lián)慣導(dǎo)相比傳統(tǒng)的平臺慣導(dǎo),用數(shù)學計算平臺代替了物理平臺,便于維護體積小重量輕成本低,便于采用余度技術(shù),提高可靠性。根據(jù)組合結(jié)構(gòu)、信息交換以及組合的程度不同,SINS和GPS組合可以分為松組合、緊組合、超緊組合和深組合四種組合模式:松組合是一種低水平的組合模式,在該系統(tǒng)中GPS和SINS單獨工作,通過專用接口將兩者的量測數(shù)據(jù)輸入組合濾波器,利用GPS信息通過濾波器估計并校正SINS誤差,使其保持較高的導(dǎo)航精度;緊組合根據(jù)SINS信息和衛(wèi)星星歷計算接收機相對于衛(wèi)星視線方向的距離和距離變化率與GPS碼環(huán)和載波環(huán)得到的偽距偽距率相減作為卡爾曼濾波器的量測信息,然后利用濾波器估計SINS誤差率和接收機鐘差等對SINS進行校正;超緊組合還利用SINS輸出的速率信息來輔助GPS的跟蹤環(huán)路;深組合是以矢量跟蹤為基礎(chǔ)采用SINS與GPS接收機信號相關(guān)器的輸出進行數(shù)據(jù)融合。
16、對于代碼的優(yōu)化,除以2可以用>>1代替;>>>無符號右移,在androidstudio里面運行測試類,出了java類放的位置要正確,測試函數(shù)前也要加上注解@Test,這樣才能運行成功,并且結(jié)果在logcat里查詢.
17、Android通信機制:message是數(shù)據(jù)載體;handler功能是發(fā)送消息、處理消息、移除消息;CONTEXT是提供了關(guān)于應(yīng)用環(huán)境全局信息的抽象類,通過他的對象才可以操作系統(tǒng)或應(yīng)用的相關(guān)資源;
18、鴻蒙開發(fā)IDE ?DevEcoStudio打開工程的目錄千萬不能包含中文。安卓內(nèi)部存儲需要root權(quán)限,建議把文件保存到sd卡上。
總結(jié)
以上是生活随笔為你收集整理的android项目学习心得(全源导航)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019八泉峡第二届国际露营大会圆满落幕
- 下一篇: 桃花下的爱恋,痴情