国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程之Sdcard相關代碼集錦

2020-04-11 11:16:53
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程之Sdcard相關代碼。分享給大家供大家參考,具體如下:

1. 檢測Sdcard是否可用:

public static boolean sdCardIsAvailable() {   String status = Environment.getExternalStorageState();   if (!status.equals(Environment.MEDIA_MOUNTED)) {    return false;   }   return true; } 

2. 獲得程序在sd卡上的cahce目錄:

private static boolean hasExternalCacheDir() {   return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; } /** * @param context 上下文 * @return The external cache dir SD卡路徑 */ private static String getExternalCacheDir(Context context) {   // android 2.2 以后才支持的特性   if (hasExternalCacheDir()) {    return context.getExternalCacheDir().getPath() + File.separator + "gesture";   }   // Before Froyo we need to construct the external cache dir ourselves   // 2.2以前我們需要自己構造   final String cacheDir = "/Android/data/" + context.getPackageName() + "/cache/gesture/";   return Environment.getExternalStorageDirectory().getPath() + cacheDir; } 

3. 獲取Sdcard的實際空間大小:

public static long getRealSizeOnSdcard() {   File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath());   StatFs stat = new StatFs(path.getPath());   long blockSize = stat.getBlockSize();   long availableBlocks = stat.getAvailableBlocks();   return availableBlocks * blockSize; } 

----->檢測Sdcard是否有足夠的空間:

/** * @param updateSize 指定的檢測空間大小 * @return True 空間足夠返回true,不足返回false */ public static boolean enoughSpaceOnSdCard(long updateSize) {   String status = Environment.getExternalStorageState();   if (!status.equals(Environment.MEDIA_MOUNTED))    return false;   return (updateSize < getRealSizeOnSdcard()); } 

4. 獲取手機的存儲大小:

public static long getRealSizeOnPhone() {   File path = Environment.getDataDirectory();   StatFs stat = new StatFs(path.getPath());   long blockSize = stat.getBlockSize();   long availableBlocks = stat.getAvailableBlocks();   long realSize = blockSize * availableBlocks;   return realSize; } 

---->檢測手機存儲是否有足夠的空間:

/** * @param updateSize 指定的檢測空間大小 * @return 空間足夠返回true,不足返回false */ public static boolean enoughSpaceOnPhone(long updateSize) {   return getRealSizeOnPhone() > updateSize; } 

附帶點很久之前的記憶小贈品:

1. 在Android.mk中加入LOCAL_CERTIFICATE := platform就可以使用系統隱藏api(@hide)。

2.Activity的啟動模式總結:

1). standard:

堆棧(task):與應用程序的其他已啟動過的Activity在同一個堆棧

實例創建:每次啟動都會創建新的實例

2). singleTop:

堆棧(task):與應用程序的其他已啟動過的Activity在同一個堆棧

實例創建:啟動時,檢查是否有該Activity的實例在當前的棧頂(啟動過的記錄)。若有,則不再創建新實例,若無,則重新創建新實例,置于棧頂。

3). singleTask:

堆棧(task): 與應用程序的其他已啟動過的Activity在同一個堆棧

實例創建:啟動時,檢查task中是否有該Activity的實例。若有,則將task中在該Activity實例之上的所有其他Activity實例統統出棧(pop),
 使其在棧頂。若無,則重新創建該Activity實例,置于棧頂。

4). singleInstance:

堆棧(task):與另外其他三種模式不同,會新建一個task,將Acitvity放置于這個新的task中,并保證不再有其他Activity實例進入.

實例創建:第一次創建時,會新建一個task,將其至于新的task中。若實例已存在,在啟動時,無需再創建新實例,復用之前已創建的實例。

3.設置Activity的背景為手機桌面的背景:

在setContentView方法之前添加getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER, WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER),

然后在AndroidManifest.xml文件中添加android:theme="@android:style/Theme.Translucent"屬性,實現將該Activity設置為透明。

4.查看手機內存空間代碼long freeMemory = Runtime.getRuntime().freeMemory();

5.關于Android主線程:

android中的主線程是UI線程,它是針對android中的UI組件操作的線程,而android中UI組件操作要求是非線程安全的,

畢竟UI組件的更新操作要求快速響應,如果更新時考慮線程安全,同步鎖等待響應之類的,那么UI組件的更新響應就有可能會延遲,
  這樣話就不符合Android要求盡可能規避的ANR異常。

6.Android4.4系統發布了一個ART運行時,準備用來替換掉之前一直使用的Dalvik虛擬機,希望籍此解決飽受詬病的性能問題。

7. 引用相關:

SoftReference<T>:軟引用-->當虛擬機內存不足時,將會回收它指向的對象;需要獲取對象時,可以調用get方法。

WeakReference<T>:弱引用-->隨時可能會被垃圾回收器回收。

softReference多用作來實現cache機制,weakReference一般用來防止內存泄漏,要保證內存被VM回收 .

8.TCP和UDP

由于面向連接的TCP協議在發生數據丟包時,會要求重傳,這會

影響視頻的實時性。UDP由于其是面向事務的,且簡單不可靠的傳輸協議,

在傳輸視頻數據當中具有快捷,消耗資源小的特點,簡單的傳輸過程中產生的

丟包和亂序是可以在視頻接收端處理的。所以一般采用UDP協議作為多媒體通信的傳輸層協議。

9.內存相關:

1). 一個進程的內存可以由2個部分組成:java 使用內存 ,C 使用內存 ,

這兩個內存的和必須小于16M(16M是怎么來的?算是實驗來的吧,每個機型不一樣,模擬器不同版本也不一樣,可以通過:
Runtime.getMaxMemory() 來查看。),不然就會出現大家熟悉的OOM,這個就是第一種OOM的情況。

2). 更加奇怪的是這個:一旦內存分配給Java后,以后這塊內存即使釋放后,也只能給Java的使用,這個估計跟java虛擬機里把內存分成好幾塊進行緩存的原因有關,反正C就別想用到這塊的內存了。

10.獲取底部虛擬按鍵高度(針對沒有物理按鍵的手機):

/** * 獲取底部虛擬按鍵高度(針對沒有物理按鍵的手機) * @return */ private int getNavigationBarHeight() {   int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");   if (resourceId > 0) {    return getResources().getDimensionPixelSize(resourceId);   }   return 0; }

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 噶尔县| 永福县| 五大连池市| 上饶市| 洪泽县| 武宁县| 绩溪县| 眉山市| 祁连县| 海盐县| 吐鲁番市| 荥阳市| 化州市| 贵阳市| 开阳县| 上杭县| 攀枝花市| 陆丰市| 基隆市| 耒阳市| 大安市| 青川县| 迁西县| 金门县| 磐石市| 嫩江县| 海宁市| 镇坪县| 大化| 图木舒克市| 辰溪县| 沐川县| 当涂县| 澎湖县| 韶关市| 乌兰察布市| 富平县| 乐山市| 浏阳市| 松原市| 浮山县|