- Android4.4以后不允許非系統應用發送系統廣播,所以更新媒體庫的廣播Intent.ACTION_MEDIA_MOUNTED 在4.4之后無效
- Android多媒體數據不是從文件系統中取?是從多媒體數據庫中取? 這二者有什么區別?
Android系統在啟動的時候會啟動MediaScannerService掃描系統上的多媒體文件,然后將這些多媒體文件的信息加入到多媒體數據庫中,應用程序要取得這些多媒體信息就是從這個多媒體數據庫里面去取的,并不是從SD卡中取。也就是說,如果開機后增加或刪除了一些多媒體,這個多媒體數據庫是不會自動刷新的。
- 更新媒體數據庫時,使用
MediaScannerConnection.scanFile(this, new String[] {"文件全路徑"}, null,null);
和
intent.setData(Uri.fromFile(new File(“文件路徑,包括文件名”)));
context.sendBroadcast(intent);```都只更新所在數據庫中文件信息的列,與之相關的相冊信息不會更新
4. 調用相機拍攝照片返回照片列表顯示界面時不能更行列表,重新選擇相冊才可以更新。但這兩個都是用同一個顯示邏輯,為什么?
拍攝照片返回并讀取,涉及到以下過程 ---調用相機,設置存儲路徑,照片文件存儲,掃描照片,加載到媒體庫。掃描 MediaScannerConnection是異步操作,如果在掃描還沒有完成(也就是照片信息沒有加載到媒體庫中)就讀取顯示照片,當然不能找到。
【經驗教訓】當從網絡上查找到新的方法解決需求時,最好看一下這個方法各個參數的意義,這樣可以根據實際需求應用,如果有時間看看其他重載方法更好。
5. fragment的使用
(1)extends Fragment和 extends FragmentActivity有什么區別
(2)android.app.Fragment,因為我們的程序是面向Android 4.0以上系統的,另一個包下的Fragment主要是用于兼容低版本的Android系統
(3)activity.xml中放置一個FrameLayout,代碼中用fragment進行替代
(4)fragment之間中進行消息傳遞
(5)activity和fragment傳遞消息
(6)activity調用fragment的UI
(7)fragment調用activity的UI
6.接口定義的一般方法:例:A中進行接口B定義:
Class A{
void 調用方法(B b){
this.b=b;
...
***b.接口方法(傳入參數);***
}
interface B{
接口方法
}
}