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