上一篇文章中我們講解了Android中內存對象的序列化方式。由于Android開發涉及到不同Activity的數據傳遞,對于基本數據類型數據的傳遞是沒有問題的,但是一旦涉及到復雜數據類型,就需要將數據序列化以便傳輸,在文章中我們主要講解了兩種數據序列化的方式:實現Serializable接口和實現Parcelable接口,同時也比較了它們各自的優缺點和實現方式。具體關于內存對象序列化方面的知識可參考:[Android產品研發(十五)–>內存對象序列化](http://blog.csdn.net/qq_23547831/article/details/51779528)
本文主要介紹Android開發中常常涉及到但又不是被人重視知識點:開發者選項。主要涉及到如何打開開發者模式,開發者選項中有哪些操作菜單以及各自的作用,如何清除手機數據,清除手機數據具體清除那些數據等等。
一般而言,不同的手機開發者選項界面是不太相同的,這是由于手機的設置界面都被做了定制化處理,但是其基本的功能菜單都是類似的。下面我們就先來看一下如何打開手機的開發者模式。
**如何打開開發者選項菜單?**
不同的手機進入開發者選項的菜單可能不太一樣,但是基本的大概的可能是:
* 設置
* 關于手機
* Android版本號
* 連續點擊N次
* 彈出進入開發者模式說明
經過上面的步驟,我們就打開了手機的開發者模式,在進入了開發者模式之后我們就可以在設置頁面或者是設置里面的其他設置,高級設置等等菜單之中找找是否出現了開發者選項的菜單,若出現了開發者選項菜單我們就可以根據自己的需求選擇性的打開各種控制開關了。
**開發者選項中提供了那些功能?**
知道了如何把手機進入開發者模式之后,在我們的日常開發過程中,不可避免的會使用到Android開發者選項這一個功能,比如使用真機在Android studio中調試App等等,那么開發者選項中到底有哪些功能呢?一下就是開發者選項中提供的功能呢列表:

**開發者選項中的具體功能**
這里以紅米note2的開發者選項說明一下各個選項的具體功能:
* 開啟開發者選項
這是開發者選項的控制開發,打開這個才算開啟了開發者選項,并且下面的選項功能才可以使用
* 提交錯誤報告
將本機上安卓系統的出錯日志以及硬件設備信息發送給谷歌。一般是發送不到的,原因你懂的!所以開不開啟都無所謂的。
* 不鎖定屏幕
解釋很清楚,充電時不會休眠,比如我們在使用手機調試程序的時候,一會手機就鎖屏了,很麻煩,如果我們打開這個設置之后,無論什么時候我們的手機都不會在鎖屏了,很方便
* 直接進入系統
很實用,就是開發過程中點擊屏幕直接進入系統而不會鎖屏
* 打開藍牙數據包日志
這個選項會抓取所有的藍牙數據包保存到一個文件中,在調試藍牙程序的時候比較好用
* 進程統計信息
主要用于統計系統程序的后臺信息

可以查看一些程序使用時長,內存占用等信息;
- USB調試
這是手機能夠連接電腦的關鍵操作,只有開啟了這個選項手機才能連接到電腦,并進行調試,很多時候我們的手機連接不到電腦都是因為我們打開了開發者模式,但是允許USB調試的開關沒有打開,這時候重新打開USB調試,可能手機就能連接到電腦了
- 允許模擬位置
允許代碼模擬位置,比如地圖類應用需要測試在外地的使用情況,通過開啟此項選項可以通過代碼模擬位置
- 選擇調試應用
設定需要調試的應用程序,以Android studio為例,設定調試程序之后,Android monitor窗口的默認選擇程序就是設定的調試程序。當然我們也可以在手機的開發者選項中選擇需要調試的應用程序
- 顯示觸摸操作
可以在屏幕中顯性的展示觸摸的軌跡
- 指針位置
可以顯示觸摸的指針坐標點
- 顯示邊界布局
主要用于顯示布局的邊界,比如一個Activity顯示界面中各種布局文件的邊界等
- 窗口動畫縮放
可以設置動畫的縮放效果
- 動畫程序時常縮放
可以設置動畫程序播放時長
- 模擬輔助顯示設備
小米手機中改選項可以模擬各種屏幕分辨路的顯示效果
- 調試GPU過度繪制
主要用于顯示在界面是否存在過度繪制的現象
一共有四種顏色:藍色、綠色、淡紅、深紅。根據過度繪制的次數,依次遞增。1x過度繪制是藍色、2x是綠色、3x是淡紅、4x是深紅。具體關于Android中過度繪制的問題,可參考我的:[Android中的過度繪制](http://blog.csdn.net/qq_23547831/article/details/50521909)
- 后臺進程限制
主要用于限制后臺進程的數量
- 系統內存優化級別
主要用于設置系統內存的優化級別
當然了以上介紹的這些選項是開發者選項中提供核心功能的菜單,此外還有一些其他選項,大家可以多了解一下。
**清除App數據**
下面我們將在開發者選項的基礎上介紹一個其他方面的內容–清除App數據。
**什么是清除App數據?**
手機在運行過程中會在手機端保存一些臨時數據,配置數據,運行數據等,這些數據可能以配置文件,數據庫文件等形式保存在手機端,Android手機在設置頁面提供了清除App數據的功能,可以通過這個功能實現對App保存數據的清除操作。
如何進行清除App數據
我們可以通過如下步驟實現對App數據的清除工作:
* 手機設置
* 應用管理
* 某一應用
* 清除數據
這樣通過如上的操作步驟我們就將這個App的數據清除了,但是這樣操作之后到底會清除App那些數據呢?
**清除App數據的類型**
- 這里新建一個項目com.chao.ttext,我們在項目數據目錄:data/data/com.chao.ttext目錄下創建緩存數據目錄,具體目錄結果如下所示:
~~~
data/data/com.chao.ttext # ls
lib 存放使用的包
files 存放應用程序自己保存的文件
databases 存放數據庫數據
shared_prefs SP文件
cache 存放緩存數據
app_appcache H5緩存
app_databases webview緩存
app_geolocation 定位緩存
~~~
- 然后我們為每個目錄添加一個新的空文件,這里暫時使用linux命令:touch,在每個目錄中添加數據文件用于判斷清除數據的結果:
~~~
/data/data/com.chao.ttext # touch lib/temp.txt
/data/data/com.chao.ttext # touch files/temp.txt
/data/data/com.chao.ttext # touch databases/temp.txt
/data/data/com.chao.ttext # touch shared_prefs/temp.txt
/data/data/com.chao.ttext # touch cache/temp.txt
/data/data/com.chao.ttext # touch app_appcache/temp.txt
/data/data/com.chao.ttext # touch app_databases/temp.txt
/data/data/com.chao.ttext # touch app_geolocation/temp.txt
~~~
- 繼續的我們執行清除App數據的操作,即:打開設置-》應用管理-》ttext-》清除數據
- 最后我們查看一下執行了清除數據操作之后的數據目錄即查看ttext數據目錄下的數據情況:
~~~
/data/data/com.chao.ttext # ls
lib
~~~
然后進入lib目錄查看temp.txt文件是否還存在,結果還是存在的。
**結論:清除數據會清除App數據目錄下除lib文件以外的所有文件和目錄。**
**總結**:
* 在Android開發中常常會使用到開發者選項,可以通過設置關于手機Android版本號連續點擊的方式進入開發者選項
* 常見的手機無法連接電腦可能是USB調試開關沒有打開的原因,可以嘗試打開USB調試連接電腦
* 開發者選項中有一些比較實用的功能可能會在調試App的時候用到,比如:不鎖屏,GPU調試,動畫調試等等
* 清除App數據會清除App數據目錄下除lib文件以外的所有文件和目錄
* 清除App數據,會使App進程被殺死,也就是說執行了清除App數據的操作之后再次打開App都是重新打開一個新的進程
另外對產品研發技術,技巧,實踐方面感興趣的同學可以參考我的:
[android產品研發(一)-->實用開發規范 ](http://blog.csdn.net/qq_23547831/article/details/51534013)
[android產品研發(二)-->啟動頁優化 ](http://blog.csdn.net/qq_23547831/article/details/51541277)
[android產品研發(三)-->基類Activity ](http://blog.csdn.net/qq_23547831/article/details/51546974)
[android產品研發(四)-->減小Apk大小](http://blog.csdn.net/qq_23547831/article/details/51559066)
[android產品研發(五)-->多渠道打包](http://blog.csdn.net/qq_23547831/article/details/51569261)
[Android產品研發(六)–>Apk混淆](http://blog.csdn.net/qq_23547831/article/details/51581491)
[android產品研發(七)-->Apk熱修復](http://blog.csdn.net/qq_23547831/article/details/51587927)
[Android產品研發(八)–>App數據統計](http://blog.csdn.net/qq_23547831/article/details/51612429)
[Android產品研發(九)–>App網絡傳輸協議](http://blog.csdn.net/qq_23547831/article/details/51655330)
[Android產品研發(十)–>不使用靜態變量保存數據](http://blog.csdn.net/qq_23547831/article/details/51685310)
[Android產品研發(十一)–>應用內跳轉scheme協議](http://blog.csdn.net/qq_23547831/article/details/51685310)
[Android產品研發(十二)–>App長連接實現](http://blog.csdn.net/qq_23547831/article/details/51719389)
[Android產品研發(十三)–>App輪詢操作](http://blog.csdn.net/qq_23547831/article/details/51764773)
[Android產品研發(十四)–>App升級與更新](http://blog.csdn.net/qq_23547831/article/details/51764773)
[Android產品研發(十五)–>內存對象序列化](http://blog.csdn.net/qq_23547831/article/details/51779528)
- 前言
- (一)–>實用開發規范
- (二)-->啟動頁優化
- (三)-->基類Activity
- (四)-->減小Apk大小
- (五)-->多渠道打包
- (六)-->Apk混淆
- (七)-->Apk熱修復
- (八)-->App數據統計
- (九)-->App網絡數據解析
- (十)-->盡量不使用靜態變量保存數據
- (十一)-->應用內跳轉Scheme協議
- (十二)-->App長連接實現
- (十三)-->App輪詢操作
- (十四)-->App升級與更新
- (十五)-->內存對象序列化
- (十六)-->開發者選項
- (十七)-->Hybrid開發
- (十八)-->webview問題集錦
- (十九)-->Android studio中的單元測試
- (二十)-->代碼Review
- (二十一)-->Android中的UI優化
- (二十二)-->Android實用調試技巧
- (二十三)-->Android中保存靜態秘鑰實踐
- (二十四)-->內存泄露場景與檢測
- (二十五)-->MVC/MVVM/MVP簡單理解