# 合理管理內存
### 節制地使用Service
### 當界面不可見時釋放內存
onTrimMemory
### 當內存緊張時釋放內存
### 避免在Bitmap上浪費內存
### 使用優化過的數據集合
### 知曉內存的開支情況
### 謹慎使用抽象編程
### 盡量避免使用依賴注入框架
### 使用ProGuard簡化代碼
ProGuard相信大家都不會陌生,很多人都會使用這個工具來混淆代碼,但是除了混淆之外,它還具有壓縮和優化代碼的功能。ProGuard會對我們的代碼進行檢索,刪除一些無用的代碼,并且會對類、字段、方法等進行重命名,重命名之后的類、字段和方法名都會比原來簡短很多,這樣的話也就對內存的占用變得更少了。
### 使用多個進程
這個技巧其實并不是非常建議使用,但它確實是一種可以幫助我們節省和管理內存的高級技巧。如果你要使用它的話一定要謹慎使用,因為絕大多數的應用程序都不應該在多個進程當中運行的,一旦使用不當,它甚至會增加額外的內存而不是幫我們節省內存。這個技巧比較適用于那些需要在后臺去完成一項獨立的任務,和前臺的功能是可以完全區分開的場景。
這里舉一個比較適合去使用多進程技巧的場景,比如說我們正在做一個音樂播放器軟件,其中播放音樂的功能應該是一個獨立的功能,它不需要和UI方面有任何關系,即使軟件已經關閉了也應該可以正常播放音樂。如果此時我們只使用一個進程,那么即使用戶關閉了軟件,已經完全由Service來控制音樂播放了,系統仍然會將許多UI方面的內存進行保留。在這種場景下就非常適合使用兩個進程,一個用于UI展示,另一個則用于在后臺持續地播放音樂。
- 空白目錄
- 自我介紹
- Android面試題
- Handler
- 網絡請求框架
- 圖片處理框架Picasso,Glide
- Android最佳性能實踐OOM
- 異步:RxJava,AsyncTask
- View,ViewGroup事件分發
- 消息傳遞:EventBus
- HTTPS和HTTP的區別
- 進程間通信的方式
- HttpClient與HttpUrlConnection的區別
- 性能優化
- Java多線程
- Fragment狀態保持和恢復
- 講解一下Context
- JNI
- java虛擬機和Dalvik虛擬機的區別
- 線程sleep和wait有什么區別
- 保存Activity狀態
- WebView與js交互(調用哪些API)
- 內存泄露檢測,內存性能優化
- 布局優化
- 自定義view和動畫
- 設計模式(單例,工廠,觀察者。作用,使用場景)
- String,Stringbuffer,Stringbuilder 區別
- 開源框架,為什么使用,與別的有什么區別
- Android大廠面試題
- 愛奇藝
- 小米
- 騰訊
- 阿里
- 今日頭條
- 共同問到的
- 其他問題
- 框架MVC、MVP、MVVM
- sleep和wait有什么區別
- React Native原理
- React Native面試題
- 數據結構
- Android開發
- 基礎知識
- Java基礎
- 數據結構
- 面向對象思想
- 設計模式
- 開發環境
- Android SDK
- Activity
- Service
- Broadcastreceiver
- Contentprovider
- ActionBar
- Fragment
- UI
- 通信
- 數據持久化
- 性能
- 調試
- 適配
- 測試
- 安全
- NDK
- 手機功能
- 第三方擴展
- 其他
- 2018 Java面試題
- Android(2017-2018)BAT面試題整理
- 2017下半年,一二線互聯網公司Android面試題匯總
- 2018阿里Android面試題
- 一面
- 二面
- 三面