web-dev-qa-db-ja.com

Android-SQLiteをMySQLと同期するための最良の方法

私は、毎日のユーザーのデータを記録するWebアプリとモバイルアプリを含むプロジェクトに取り組んでいます。ユーザーはデータを削除、更新でき、多くのデバイスを使用してデータを挿入できます。
私はこのように開発するつもりです:
ユーザーがデータを入力してからSQLiteに挿入します。タイムスタンプを使用してMySQLと同期するために、サービスが定期的に(5時間またはsthごとに)開始されます。
インターネットでサービスとタイムスタンプを使用してサンプルを検索しましたが、何も見つかりませんでした。サンプルやチュートリアルがあれば素晴らしいと思います。
私はAndroidで初めてですが、このようなアプリを開発するための最良の方法がわかりません。よろしくお願いします。

----編集----
タイムスタンプまたは同期の使用を検討しています。どちらがより効果的ですか?

8
Foo

volley library bygoogleまたはその他のlibrariesを使用できます。データの送信方法によって異なりますが、最善のアプローチはJSONを使用して生活を送ることです。より簡単に、バックエンドと同期したいsqliteからデータを取得し、ボレーを使用してJsonObjectRequest経由で送信します。たとえば、リクエストは次のようになります。

jsonObjectRequest postForm = new JsonObjectRequest(Request.Method.POST, URL, YourJsonData, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
         // here you can get your response.
        },new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    // here you can tell there is something went wrong.
    });

uは、値がローカルデータベースから同期されているかどうかを示す新しい値を追加できます。たとえば、studentというテーブルがあり、このテーブルにID、NAMEの3つの列があり、応答が成功したときに上記のコードで同期された場合、その行の同期列をtrue | falseに更新します。これは、この行がバックエンドと同期されたかどうかを示します。またはいいえ。データベースからデータを取得するには、次のようにする必要があります。

public String getStudents() {
        List<Student> students = new ArrayList<Student>();
        String query = "SELECT  * FROM " + STUDENT+ "where synced=0";
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query, null);
        if (cursor.moveToFirst()) {
            do {
                Student st = new Student();
                st.setId(cursor.getString(cursor.getColumnIndex(ID)));
                st.setName(cursor.getString(cursor.getColumnIndex(NAME)));
                st.setSynced(cursor.getInt(cursor.getColumnIndex(SYNCED)));
                students.add(st);
            } while (cursor.moveToNext());
        }
        db.close();
        return new Gson().toJson(students);
    }
7
k0sh

AFAIKの最も簡単な方法は、 http://loopj.com/Android-async-http/ またはvolley lijek0shのようなlibを使用してデータをPHPスクリプトに送信することです。 mysqlデータを管理します。データを受信するには、サーバーにphp(またはJava)スクリプトを作成する必要があります(REST AP​​Iを作成する必要があります)

HTTP libを選択するには、次を参照してください。

Android用の最も堅牢なHTTPライブラリは何ですか?

バッテリーを消耗する可能性があるため、データを同期する方法に本当に注意する必要があります。ここでは、更新を最適化する方法を学習します。

https://developer.Android.com/training/efficient-downloads/index.html

それが役に立てば幸い!

5