0

アプリケーションまたはアクティビティの最初の起動を認識する必要があります。

この時点で、サーバーからいくつかの情報を取得してローカルデータベースを作成し、それに情報を保存する必要があります。これを行うための最良の方法は何ですか?

  1. たとえば、任意の設定を作成し、それに\をFirstLaunch設定します。truefalse
  2. データベースが存在するかどうかを確認してください。
  3. 他に何かありますか?

PS。すべてのサーバー呼び出しは、1つのトランザクションにまとめる必要があります。Ormliteはトランザクションをサポートしていますか?ありがとう。

4

4 に答える 4

3

「最初の実行時にデータベースを作成する」という目的のために、次のときに呼び出されるメソッドを提供する を使用する必要がありますSQLiteOpenHelperonCreate()

[...] データベースは初めて作成されます。

データベース ファイル自体が作成されます (手動で行う必要はありません)。このメソッドでは、データベースに標準エントリを入力するなどのアクションを実行できます。


サーバーから取得した情報をデータベースに入力する場合、インターネット接続が利用できない場合に問題が発生する可能性があります。

この場合、利用可能な接続があるかどうかを確認します。

  • ある場合は、情報を入手してください。
  • そうでない場合は、トーストまたはその他の通知を表示して、ユーザーに通知します。

SQLiteDatabaseデータベースに標準エントリが入力されているかどうかを判断するには、 -classによっても提供される database-version を使用できます。

  • Database-object を初めて作成するときは、 SQLiteOpenHelpers コンストラクターを呼び出し0て、それを Database バージョンとして渡します。
  • データベースが正常に作成 された場合は、 setVersion()-methodを使用してデータベースを に変更し1ます。
  • データベースが開かれたときに呼び出される-methodの後半で、onOpen()-methodを使用してデータベースにデータがgetVersion()取り込まれたかどうかを確認できます。
    • 設定されている場合は、スーパーメソッドを呼び出して開きます。
    • そうでない場合は、入力してみてください。

さらに、次の理由により、getReadableDatabase()/getWritableDatabase()メソッドはメインスレッドから呼び出す必要があります。

データベースのアップグレードには時間がかかる場合があります。ContentProvider.onCreate() を含め、アプリケーションのメイン スレッドからこのメソッドを呼び出さないでください。

したがって、インターネットからの情報取得は、onCreate()および -メソッドで行うことができますonOpen()(最初の試行で成功しなかった場合)。(たとえば) Serviceを使用してこれを行うことができます。

于 2011-08-24T11:10:27.920 に答える
1

データベースでこの問題を解決したい場合: MyDatabasaVersion テーブルを使用してデータベースを作成し、バージョンを 1 つの行に格納します。たとえば、db_version のデフォルト値は 0 です。最初にアプリケーションを起動するときに、同期を開始する必要がある 0 の場合は db_version を確認します。終了後、db_version を 1 に設定します。

于 2011-08-24T11:10:30.063 に答える
0

最も簡単な方法は、設定を共有することです。アプリケーションコンテキストからどこでも呼び出すことができ、ブール値を入れることができます。

これがすべてのAndroidストレージです。

于 2011-08-24T11:08:44.577 に答える
0

最初のオプションを試す必要がありますCreate any preferences for example FirstLaunch and set true \ false to it.

于 2011-08-24T11:09:08.200 に答える