`
univasity
  • 浏览: 808891 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[Android API学习]Data Storage胡乱翻译(1)

阅读更多

原文请查阅:http://developer.android.com.nyud.net/guide/topics/data/data-storage.html

 

数据储存 (Data Storage)

Android为你提供了多个可选的方式来保存持久的应用数据。你可以基于特定的需求来选择解决方案,例如数据是否应该是你的应用私有的还是对其他应用(和用户)公开的以及你的数据需要多大的空间来储存。

 

你可选的数据储存方式如下:

Shared Preferences    共享偏好
以"键-值对"的形式储存私有的基础数据。 
Internal Storage   内部存储器
储存私有数据到设备内存。
External Storage   外部存储器
储存公有数据到共享的外部储存器。
SQLite Databases   SQLite数据库
用一个私有的数据库储存结构化数据。
Network Connection   网络连接
通过你自己的服务器储存数据到网络。
Android为你提供了一个途径来暴露你私有数据给其他的应用程序 —— 通过一个content provider 。一个content provider是一个可选组件,暴露你的应用程序数据的read/write接口,遵循任何可能引入的约定。更多关于content provider使用的信息,请查阅Content Providers 文档

使用Shared Preferences (Using Shared Preferences)

SharedPreferences 类提供了一个通用的框架来允许你以"键-值对"的形式来储存和获取持久的基础数据。你可以使用SharedPreferences 来保存任何基础数据:boolean, float, int, long和String。这些数据将存留横跨用户对话(即使你的应用程序被杀死了)。

User Preferences

Shared preferences are not strictly for saving "user preferences," such as what ringtone a user has chosen. If you're interested in creating user preferences for your application, see PreferenceActivity , which provides an Activity framework for you to create user preferences, which will be automatically persisted (using shared preferences).

 

要给你的应用获取一个SharedPreference 对象,使用以下的两个函数之一:
  • getSharedPreferences() - 如果你需要多个通过名字来识别的偏好文件请使用该函数,名字通过第一个参数来设定。
  • getPreferences() - 如果你的Activity仅需要一个偏好文件请使用该函数。因为这会是你的Activity独有的偏好文件,你不用提供一个文件名。 

 

写入数值:

1.调用edit() 函数来获得一个SharedPreferences.Editor 对象。

2.通过putBoolean() putString() 等函数来添加数值。

3.通过commit() 函数来提交和确认操作。

 

要读取数值,使用SharedPreferences 中的getBoolean() getString() 等函数。

 

这里是一个例子,为一个计算器的按键静音模式保存了一个偏好:
public class Calc extends Activity {

	public static final String PREFS_NAME = "MyPrefsFile";

	@Override
	protected void onCreate(Bundle state) {
		super.onCreate(state);
		 . . .
		// Restore preferences
		SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
		boolean silent = settings.getBoolean("silentMode", false);
		setSilent(silent);
	}

	@Override
	protected void onStop() {
		super.onStop();
		// We need an Editor object to make preference changes.
		// All objects are from android.context.Context
		SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
		SharedPreferences.Editor editor = settings.edit();
		editor.putBoolean("silentMode", mSilentMode);
		// Commit the edits!
		editor.commit();
	}
}

使用内部存储器 (Using the Internal Storage)

你可以直接将文件保存到设备的内部存储器上。默认的,保存到内部存储器上的文件是对你的应用私有的并且其他应用无法访问它们(用户也不行)。当用户卸载你的应用,这些文件会被移除。

 

要创建和写入一个私有文件到内部存储器:

1.通过文件名和处理模式调用openFileOutput() 函数。返回的是一个FileOutputStream 对象。

2.使用write() 函数来写入文件。

3.使用close() 函数来关闭流。

 

For example:

String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close(); 
MODE_PRIVATE 会创建文件并使它对你的应用私有。其他可用的模式有:MODE_APPEND MODE_WORLD_READABLE MODE_WORLD_WRITEABLE

 

要从内部存储器中读取一个文件:

1.调用openFileInput() 函数并传递一个文件名来读取。返回的是一个FileInputStream 对象。

2.使用read() 函数读取文件中的字节。

3.然后使用close() 函数关闭流。

提示 :如果你希望在编译的时候保存一个静态的文件到你的应用中,将文件保存到你项目的res/raw/   目录下。你使用openRawResource() 函数可以打开它,传递一个R.raw.<filename> 资源ID。该函数返回一个你可以用来读取文件的InputStream 对象(但你无法改写原始文件)。


保存缓存文件 (Saving cache files)

如果你想缓存一些数据,而不是永久储存,你应该使用getCacheDir() 来打开一个代表内部存储器中储存临时缓存文件的目录的File 对象。

 

当设备的内部储存空间较低时,Android可能会删除这些缓存文件来取回空间。无论如何,你不应该依靠系统来为你清空这些文件。你应该始终自己来维护缓存文件并维持在一个合理的空间消耗,比如1MB。当用户卸载你的应用,这些文件会被移除。

 

其他有用的函数 (Other useful methods)

getFilesDir()
获取你的内部文件所储存的系统目录的绝对路径。
getDir()
在你的内部存储器空间中创建(或打开一个存在的)目录。
deleteFile()
删除一个保存在内部存储器上的文件。
fileList()
返回一个你的应用当前保存了的文件的数组。 
分享到:
评论

相关推荐

    data-storage-and-access.rar_android_android data storage

    但需要注意,自Android 6.0(API级别23)开始,需要动态请求WRITE_EXTERNAL_STORAGE权限。 SQLite数据库是Android提供的轻量级关系型数据库,适用于结构化的数据存储。通过`SQLiteOpenHelper`类创建和管理数据库,...

    Data Storage Networking

    总之,《Data Storage Networking》是一本全面且深入的教材,它不仅覆盖了CompTIA Storage+考试的核心知识点,还扩展到了当前IT领域的前沿话题,为读者提供了在数据存储领域持续学习和发展的坚实基础。

    android-Data-storage-and-access.rar_InternalFileDemo_android_and

    这个"android-Data-storage-and-access.rar_InternalFileDemo_android_and"压缩包包含了一系列的示例代码,涵盖了多种Android数据存储方式,帮助开发者理解并掌握如何在Android设备上有效地管理数据。 1. **...

    _storage_emulated_0_android_data_com.tencent.mobileqq_Tencent_QQfile_recv_实训四.zip

    标题中的"_storage_emulated_0_android_data_com.tencent.mobileqq_Tencent_QQfile_recv_实训四.zip" 是一个Android设备上的文件路径,它包含了用户在腾讯QQ应用中接收的文件。这个路径提供了关于文件存储位置和来源...

    Android 请求 WebAPI的案例

    在Android开发中,与WebAPI进行交互是常见的需求,例如获取服务器数据、发送用户信息等。本案例"Android请求WebAPI"将详细讲解如何在Android应用中实现...通过学习和实践,你可以更好地掌握Android与WebAPI的交互技术。

    android-serialport-api

    android-serialport-api Accessing serial ports for Android The current Android SDK does not provide any API for reading and writing to the Linux TTY serial ports. You may find such serial ports on ...

    Android Wear DataLayer

    在Android Wear DataLayer中,数据的传输主要依赖于两个关键组件:`DataItem`和`MessageAPI`。`DataItem`用于存储结构化数据,而`MessageAPI`则用于发送轻量级的消息。下面将详细介绍这两个组件以及如何使用它们。 ...

    Android6.0 Api Demos

    这些示例旨在帮助开发者更好地理解和学习如何在实际应用中使用Android的新特性和API。下面将详细探讨其中的一些关键知识点。 1. **权限管理(Runtime Permissions)** 在Android 6.0中,权限管理有了重大变化,...

    用系统自带的文件应用拷贝或移动文件无法到storage/emulated/0/Android/data 目录

    用系统自带的文件应用拷贝或移动文件无法到storage/emulated/0/Android/data 目录

    Android中文API帮助文档

    3. **Data.dat**: 这个文件通常用于存储程序数据,可能包含了Android API的搜索索引或用户自定义的数据,方便快速查找和访问API信息。 4. **System.Data.SQLite.dll**: 这是一个.NET Framework下的SQLite数据库引擎...

    android api.rar

    Android API是Android操作系统的核心组成部分,它...通过阅读"android api.rar"中的文档,开发者可以学习如何使用这些API来开发功能丰富的Android应用,同时了解最佳实践和注意事项,确保应用能在不同设备上顺畅运行。

    Android API手册 语法大全

    这份"Android API手册 语法大全"是开发者们不可或缺的参考资料,它详细介绍了Android操作系统中的各种API,涵盖了从基础到高级的各种功能,帮助开发者们理解并有效地利用这些API进行应用程序的开发。 Android API...

    Spring Data MongoDB API(Spring Data MongoDB 开发文档).CHM

    Spring Data MongoDB API。 Spring Data MongoDB 开发文档。

    Core.Data.in.Swift.Data.Storage.and.Management.for.iOS.and.OSX

    Explore how to get Core Data integrated into your application properly, and work with this flexible API to create convenience methods to improve your application's maintainability. Reduce your ...

    _storage_emulated_0_android_data_com.tencent.mobileqq_Tencent_QQfile_recv_魅族游戏框架.apk.1

    _storage_emulated_0_android_data_com.tencent.mobileqq_Tencent_QQfile_recv_魅族游戏框架.apk.1

    data-storage(4).rar_android_android 保存

    1. openFileOutput (String name, int mode) name:文件的名称,不能包含分隔符"/",如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/&lt;package_name&gt;/files目录下。 mode:操作模式 2. ...

    数据库 data storage manager和buffer manager实现

    为了了解数据库buffer管理器的工作原理,对数据库底层结构有进一步的了解,编写一个data storage manager和buffer manager。该试验涉及储存和缓冲管理器。缓冲技术,散列技术,文件储存结构,磁盘空间和缓冲模块的...

Global site tag (gtag.js) - Google Analytics