视窗苹果电脑软件设置安全生产力Linux安卓性能配置苹果自定义设备管理iPhone设置 全部

如何在Android上保存数据

已编辑 4 几个月前 通过 ExtremeHow 编辑团队

安卓数据节省连接优化设置智能手机提示移动设备数据管理用户界面

如何在Android上保存数据

翻译更新 4 几个月前

在Android设备上保存数据是移动应用程序开发的重要部分。本文将为您提供全面了解在Android设备上保存数据的各种方法。有许多保存数据的方法,包括共享偏好、内部存储、外部存储、SQLite数据库等等。

理解数据存储选项

在详细了解每种存储方法之前,了解指导Android数据存储的一般原则很重要。您需要考虑诸如您正在保存的数据类型、数据的一致性要求以及数据的隐私等因素。首先让我们概述一下您在Android上拥有的主要数据存储选项:

使用共享偏好

共享偏好适合以键值对的形式存储少量数据。它通常用于保存用户设置或应用程序偏好。以下是如何在您的Android应用程序中使用SharedPreferences:

步骤1:获取实例

您可以通过调用getSharedPreferences()方法来获取SharedPreferences实例,该方法需要两个参数:偏好文件的名称和模式。

SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);

步骤2:保存数据

要在SharedPreferences中保存数据,您需要使用SharedPreferences.Editor对象。这里是如何快速做到这一点:

SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "john_doe"); editor.putInt("user_id", 12345); editor.apply();

步骤3:恢复数据

从共享偏好获取数据很简单。您可以使用getX()方法,其中X是您想要获取的数据类型:

String username = sharedPreferences.getString("username", "default_name"); int userId = sharedPreferences.getInt("user_id", 0);

使用内部存储

内部存储用于保存只有您的应用程序可以访问的文件。它最适合用于私有数据。以下是如何与内部存储一起工作:

步骤1:写入文件

您可以使用FileOutputStream类写入文件。以下是写入一个简单文本文件的示例:

String filename = "myfile.txt"; String fileContents = "Hello World!"; FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE); fos.write(fileContents.getBytes()); fos.close();

步骤2:从文件读取

要从内部存储读取文件,您需要使用FileInputStream

FileInputStream fis = openFileInput(filename); InputStreamReader inputStreamReader = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } String fileContents = sb.toString();

使用外部存储

外部存储可以是可移动的媒体,例如SD卡或用户可访问的设备存储的一部分。这对于大型文件或可以跨应用程序共享的文件很有用。以下是如何使用外部存储:

权限

在使用外部存储之前,确保您的AndroidManifest.xml文件包含所需的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

写入外部存储

要将数据写入外部存储,使用File类定义目录和文件路径:

File externalStorageDir = Environment.getExternalStorageDirectory(); File myFile = new File(externalStorageDir, "myfile.txt"); FileOutputStream fos = new FileOutputStream(myFile); fos.write("Hello World!".getBytes()); fos.close();

从外部存储读取

从外部存储读取文件可以使用FileInputStream实现:

FileInputStream fis = new FileInputStream(myFile); InputStreamReader inputStreamReader = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } String fileContents = sb.toString();

使用SQLite数据库

SQLite是一个强大的结构化数据存储选项,提供了一个完整的SQL数据库用于存储数据。它非常适合大型或复杂的数据结构。让我们学习如何在Android中创建和使用SQLite数据库:

步骤1:创建数据库助手类

您需要创建一个继承自SQLiteOpenHelper的助手类,以管理数据库的创建和版本管理:

public class MyDbHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "mydatabase.db"; public MyDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS users"); onCreate(db); } }

步骤2:输入数据

您可以使用ContentValues进行数据输入:

MyDbHelper dbHelper = new MyDbHelper(getContext()); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "John Doe"); values.put("age", 29); long newRowId = db.insert("users", null, values);

步骤3:查询数据

查询数据使用query()rawQuery()方法完成:

SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("users", new String[] {"id", "name", "age"}, null, null, null, null, null ); while(cursor.moveToNext()) { long userId = cursor.getLong(cursor.getColumnIndexOrThrow("id")); String userName = cursor.getString(cursor.getColumnIndexOrThrow("name")); int userAge = cursor.getInt(cursor.getColumnIndexOrThrow("age")); } cursor.close();

使用Room持久库

Room是SQLite的抽象层,简化了数据库访问,使您可以在流畅的API中编写查询或依靠编译时SQL诊断。以下是基本步骤:

步骤1:定义实体

使用@Entity注解定义表的实体表示:

@Entity public class User { @PrimaryKey public int id; public String name; public int age; }

步骤2:定义数据访问对象(DAO)

通过DAO定义访问数据库的方法:

@Dao public interface UserDao { @Insert void insertAll(User... users); @Query("SELECT * FROM user") List<User> getAll(); }

步骤3:创建数据库

创建一个继承自RoomDatabase的抽象类,其中包含实体和DAO:

@Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }

步骤4:使用数据库

您可以在应用程序中使用定义的数据库:

AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build(); UserDao userDao = db.userDao(); List<User> users = userDao.getAll();

总之,Android提供了多种数据存储方法,您可以根据您的具体需求进行选择。了解每种方法的优缺点将指导您在应用程序开发过程中做出实用的决策。

如果你发现文章内容有误, 您可以


评论