iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程之Sdcard相关代码集锦
  • 685
分享到

Android编程之Sdcard相关代码集锦

Android 2022-06-06 09:06:39 685人浏览 薄情痞子
摘要

本文实例讲述了Android编程之Sdcard相关代码。分享给大家供大家参考,具体如下: 1. 检测Sdcard是否可用: public static boolean sdC

本文实例讲述了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; 
} 
 
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是否有足够的空间:


 
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; 
} 

---->检测手机存储是否有足够的空间:


 
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.获取底部虚拟按键高度(针对没有物理按键的手机):


 
private int getNavigationBarHeight() { 
  int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); 
  if (resourceId > 0) { 
   return getResources().getDimensionPixelSize(resourceId); 
  } 
  return 0; 
}

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Android开发之资源目录assets与res/raw的区别分析Android读取assets目录下的所有图片并显示的方法android读取Assets图片资源保存到SD卡实例基于android中读取assets目录下a.txt文件并进行解析的深入分析Android实现内存中数据保存到sdcard的方法Android实现把文件存放在SDCard的方法android中把文件保存到sdcard代码实例Android中删除sdcard里文件的命令Android获取SD卡路径及SDCard内存的方法Android对sdcard扩展卡文件操作实例详解Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法


--结束END--

本文标题: Android编程之Sdcard相关代码集锦

本文链接: https://www.lsjlt.com/news/26296.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python编程itertools模块处理可迭代集合相关函数
    容器与可迭代对象 在正式开始前先补充一些基本概念在 Python 中存在容器 与 可迭代对象 容器:用来存储多个元素的数据结构,例如 列表,元组,字典,集合等内容; ...
    99+
    2024-04-02
  • 日常编程中和日期相关的代码和bug
    本文主要是Java中和日期时间相隔的几个常用代码函数代码,做了总结,希望在日常编码中,可以帮到大家。 1.计算闰年 记住一个短语,“四年一润,百年不闰,四百再润”,不管换啥语言,相信大家不会写错这块的实现代码。 怎么理解呢?转换为我们程序语...
    99+
    2023-08-18
    Rxjava interval SimpleDateFo CountDowntimer
  • 怎么进行Java Socket编程相关源代码的介绍
    今天就跟大家聊聊有关怎么进行Java Socket编程相关源代码的介绍,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java Socket编程在不断发展中有不少的问题存在,下面我们就...
    99+
    2023-06-17
  • C++源代码相关编制方法有哪些
    本篇内容主要讲解“C++源代码相关编制方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++源代码相关编制方法有哪些”吧!1.多态性的概念 多态性是指用一个名字定义不同的函数,这函数执行...
    99+
    2023-06-17
  • 模板化编程与代码生成器之间的关系?
    模板化编程和代码生成器通过自动化代码生成,提高了开发效率和代码质量。模板化编程使用类型占位符定义通用代码,而代码生成器根据模板生成实际代码。它们密切相关,其中代码生成器通常利用模板化编程...
    99+
    2024-05-08
    代码生成器 模板化编程 apache
  • Java并发编程之死锁相关知识整理
    目录一、什么是死锁二、死锁产生的条件三、死锁产生的演示四、死锁的预防五、死锁的避免一、什么是死锁 所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都...
    99+
    2024-04-02
  • 关于Android Studio 在XML中编码无代码提示的问题
    记录一下终于受不了在activity_main.xml中敲代码没有提示,全手敲到网上找解决办法,到终于顺利解决的过程!   有提示可太爽啦 ~~ 解决方法: 我的Android Studio开始不懂装了好些版本的Sdk,然后全部卸载...
    99+
    2023-10-05
    android studio xml android
  • Java Socket编程关键代码是什么
    本篇内容介绍了“Java Socket编程关键代码是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!package sterni...
    99+
    2023-06-17
  • android源代码的编译过程是什么
    Android源代码的编译过程主要包括以下几个步骤:1. 下载源代码:从Android官方网站下载源代码,并解压到本地目录。2. 配...
    99+
    2023-09-21
    android
  • 【Android平板编程】远程Ubuntu服务器code-server编程写代码
    文章目录 前言1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址5.结语 前言   本次教程将在 Ubuntu 服务器环境下安装 co...
    99+
    2023-08-19
    ubuntu android 服务器
  • Python嵌入C/C++相关实际应用代码怎么编写
    这期内容当中小编将会给大家带来有关Python嵌入C/C++相关实际应用代码怎么编写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。如果你想把Python嵌入C/C++中是比较简单的事情,你需要的是在VC中...
    99+
    2023-06-17
  • Python文件相关应用方案以及代码怎么编写
    Python文件相关应用方案以及代码怎么编写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python  文件import os  im...
    99+
    2023-06-17
  • Android编程计算函数时间戳的相关方法总结
    本文实例讲述了Android编程计算函数时间戳的相关方法。分享给大家供大家参考,具体如下:对于做性能的人来说,知道时间的花在哪了是比较重要的,可以在函数前后得到系统的时间,计算时间戳能够得到每个函数的时间。在JAVA中可以通过System....
    99+
    2023-05-31
    android 时间戳 roi
  • C++编程之std::forward使用代码分析
    今天小编给大家分享一下C++编程之std::forward使用代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。std:...
    99+
    2023-07-05
  • Java编程之继承问题代码示例
    课堂练习:–在包bzu.aa中定义一个交通工具类(Vehicle):属性——载客量(capacity)方法(1)无参构造方法(给capacity初始化值为2,并输出“执行交通工具类的无参构造方法。”)(2)有参构造方法(传参给capacit...
    99+
    2023-05-30
    java 继承代码 ava
  • java并发编程之同步器代码示例
    同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作。最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier和Exchanger队列同步器AbstractQueuedSynchronizer是用来...
    99+
    2023-05-30
    java 并发 同步器
  • SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码
    Mybatis-Plus是一个优秀的Mybatis增强工具,目前更新到3.1.1。Mybatis-Plus原生提供了很多单表操作的方法,极大简化了繁琐的curd的操作,同时又支持xm...
    99+
    2024-04-02
  • 如何进行Java多线程循环相关的代码介绍
    这篇文章给大家介绍如何进行Java多线程循环相关的代码介绍,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java多线程循环需要我们不断的学习,有很多的问题一直是我们相互关心的。下面我们就来看看如何才能更好的使用这门编程...
    99+
    2023-06-17
  • Java编程中的关键字和Unix命令:它们之间有何相似之处?
    Java编程和Unix命令是两个非常不同的领域,但是它们之间却有着许多相似之处。本文将介绍Java编程中的关键字和Unix命令,并探讨它们之间的相似之处。 一、Java编程中的关键字 Java编程中的关键字是指Java语言中具有特殊用途的单...
    99+
    2023-09-20
    关键字 对象 unix
  • Java编程IP地址和数字相互转换代码示例
    最近才知道,将ip地址转换成十进制、八进制、十六进制同样可以访问网站。IP转为数字(第二种算法。用左移、按位或实现。效率更高。):public long ipToLong(String ipAddress) { long result =...
    99+
    2023-05-30
    java ip地址 相互
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作