原创 JNI---動態註冊與線程

動態註冊 當我們執行System.loadLibrary時。 static { System.loadLibrary("native-lib"); } cpp文件首先將調用JNI_Onload方法

原创 Android---消息機制源碼分析

ThreadLocal: 一個線程內部的數據存儲類,可以在指定線程中存儲數據,數據存儲以後,只有在指定線程中可以獲取到存儲的數據。 先看下以下代碼:主要是重寫了initialValue方法(請看下面的源碼) @Test

原创 JNI---快速入門

在上一篇中,講了如何CMake生成so動態庫,這裏寫一下簡單的語法操作。 java調用native方法返回值。 第一步:在java文件中寫native方法。 public native String test(Strin

原创 Ida---操作

alt+f12:字符串集 f5:反編譯成c

原创 Linux---基本命令

[].:表示提示符的分隔符號,沒有特殊意義 root:顯示當前用戶 @:分割符號,沒有特殊意義 ~:表示當前所在目錄 #:命令提示符。超級用戶是#,普通用戶$ 命令基本格式:[root@localhost~]# 命令 [選項]

原创 彙編知識點

一個存儲單元可以存儲8個bit,即八個二進制數 debug命令: R:查看,改變cpu寄存器的內容 D:查看內存中的內容 E:改寫內存中的內容 U:將內存中的機器指令翻譯成彙編指令 T:執行一條機器指令 A:以彙編指令的格式在內

原创 Android---進入直接彈出鍵盤輸入

editView.requestFocus();//獲取輸入框焦點 InputMethodManager imm = (InputMethodManager) requireActivity().getSystemServ

原创 Android---創建右上角菜單

在資源文件報下創建menu文件。可以從視圖左側將需要的菜單拖入 如果想造多一行。則找到屬性showAsAction,可以選擇ifRoom(如果在空間允許的情況下創建)或者always 在對應avtivity寫回調方法

原创 Android---Room(三)

當表的結構發生變化時處理方法: 下面方法共同點就是版本號+1 最簡單的方法就是在數據庫創建時,執行破壞式的遷移 .fallbackToDestructiveMigration()//破壞式遷移 INSTANCE= Room.d

原创 Android---初探Lifecycle

這個東西的用途簡單來說就是,來封裝控件的各生命週期的方法。 用一個例子說明。 我們開始用一個不用Lifecycle的方法: Chronomete是一個計算器。這串代碼的功能是當你打開程序時,它從0開始計時。當你退出去的時候,數值“

原创 Android---Room(一)

使用room所需依賴:網址:鏈接 Room的使用,通過註解的方式可以簡化SQLite的操作。 第一步,創建一個bean類。這個bean類表示就是表首行。 注意:成員變量一點要設置set,get方法,不然room會報錯 @Entit

原创 Android---Room(二)

在前一篇的基礎上優化代碼。前一篇數據的操作放在了主線程。這裏引入了異步任務來進行數據庫的操作 首先是(Word)bean類,沒有變化: @Entity public class Word { @PrimaryKey(au

原创 Android---ViewModel實現Fragment跨頁面數據共享

前面完成了Navigation實現fragement的切換 在最後,我們提到數值的傳遞問題。 這篇我們在上一篇的基礎上,增加一個ViewModel來實現數據的共享。 直接上代碼吧。也不是很難。 首先是兩個fragment。要注意的

原创 Android---AndroidViewModel

AndroidViewModel是系統提供的一個類,是ViewMode的一個子類。 這一篇將來介紹下用AndroidViewModel。做一個簡單的sp數值保存操作。在我們關掉程序後,重新打開時數值可以重新呈現 因爲SharedP

原创 Android---Navigation實現fragement的切換

首先,我們得知道fragement依賴於activity fragment的切換就跟棧一樣,進棧出棧。 我們先創建兩個Fragment 這兩個方法不要勾選:工廠方法和接口回調。如果勾選的話,會閒的內容特別亂。所以建議不要勾選。