ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

Androidでデータを保存する方法

編集済み 4 数か月前 によって ExtremeHow 編集チーム

Androidデータの保存接続性最適化設定スマートフォンヒントモバイルデバイスデータ管理ユーザーインターフェース

Androidでデータを保存する方法

翻訳が更新されました 4 数か月前

Androidデバイスにデータを保存することは、モバイルアプリケーション開発の重要な部分です。この記事では、Androidデバイスにデータを保存するために使用されるさまざまな方法について包括的に理解できるようにします。データを保存する方法は多くあり、共有プリファレンス、内部ストレージ、外部ストレージ、SQLiteデータベースなどがあります。

データストレージオプションを理解する

各ストレージ方法の具体的な説明に入る前に、Androidでのデータストレージを導く一般原則を理解することが重要です。保存するデータの種類、このデータの必要な一貫性、データのプライバシーなどを考慮する必要があります。まず、Androidで使用できる主なデータストレージオプションを概説しましょう。

共有プリファレンスの使用

共有プリファレンスは、キーと値のペアとして小さなデータを保存するのに適しています。ユーザー設定やアプリケーションの設定を保存するためによく使用されます。AndroidアプリケーションでSharedPreferencesを使用する方法は以下の通りです:

ステップ 1: インスタンスを取得する

getSharedPreferences()メソッドを呼び出してSharedPreferencesのインスタンスを取得できます。このメソッドには、プリファレンスファイルの名前とモードという2つのパラメータが必要です。

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の上に抽象化レイヤーを提供し、データベースアクセスを簡素化し、Fluent 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はデータストレージのためのいくつかの方法を提供しており、特定のニーズに基づいて選択することができます。各方法の長所と制限を理解することで、アプリ開発中に実用的な決定を導くことができます。

記事の内容に誤りがある場合, あなたは


コメント