OPは「保存」機能を求めています。これは、プログラムの実行全体でデータを保存するだけではありません(アプリが価値を発揮するには、この機能を実行する必要があります)。
データをSDカードのファイルに保存することをお勧めします。これにより、後で呼び出すだけでなく、ユーザーがデバイスを自分のコンピューターの外付けドライブとしてマウントし、他の場所で使用するためにデータを取得できるようになります。
したがって、本当にマルチポイントシステムが必要です。
1)onSaveInstanceState()を実装します。このメソッドでは、基本的にハッシュオブジェクトのようなバンドルが渡されます。アプリを中断したところから正確に再起動するために必要な情報をバンドルに保存します。onCreate()メソッドで、渡されたバンドルがnullでないことを確認し、nullでない場合は、バンドルから状態を復元します。
2)onPause()を実装します。この方法では、SharedPreferencesエディターを作成し、それを使用して、次回アプリを起動するために述べる必要のある状態を保存します。これは主にユーザーの設定(名前の由来)で構成されていますが、アプリの起動状態に関連するその他のものもここに配置する必要があります。ここにはスコアを保存せず、アプリを再起動するために必要なものだけを保存します。次に、onCreate()で、バンドルオブジェクトがない場合は常に、SharedPreferencesインターフェイスを使用してそれらの設定を呼び出します。
3a)スコアなどについては、上記のMathiasのアドバイスに従って、openFileOutput()などを使用してgetFilesDir()で返されたディレクトリにスコアを保存できます。このディレクトリはアプリ専用であり、メインストレージに存在すると思います。他のアプリやユーザーはデータにアクセスできません。それでよければ、これがおそらく進むべき道です。
3b)他のアプリやユーザーがデータに直接アクセスできるようにしたい場合、またはデータが非常に大きくなる場合は、SDカードが最適です。他のアプリケーションとの衝突を避けるために(アプリ名が適度に一意であることが確実でない限り)com / user1446371 / casinoballapp /のようなディレクトリ名を選択し、SDカードにそのディレクトリを作成します。マティアスが指摘したように、最初にSDカードがマウントされていることを確認する必要があります。
File sdcard = Environment.getExternalStorageDirectory();
if( sdcard == null || !sdcard.isDirectory()) {
fail("sdcard not available");
}
File datadir = new File(sdcard, "com/user1446371/basketballapp/");
if( !datadir.exists() && !datadir.mkdirs() ) {
fail("unable to create data directory");
}
if( !datadir.isDirectory() ) {
fail("exists, but is not a directory");
}
// Now use regular java I/O to read and write files to data directory
他のアプリケーションが簡単に読み取れるように、データには単純なCSVファイルをお勧めします。
明らかに、「保存」および「開く」ダイアログを許可するアクティビティを作成する必要があります。私は通常、openintentsファイルマネージャーを呼び出して、それが機能するようにします。ただし、これらの機能を利用するには、ユーザーがopenintentsファイルマネージャーをインストールする必要があります。