0

私のアプリでは、アプリケーションの起動時にのみ文字列をサーバーに渡す必要があります。

文字列が送信されたかどうかを確認するために SharedPreferences を使用しました。

このコードは MainActivity のスターで実行されます

        pref=getPreferences(MODE_PRIVATE);
        Sent=pref.getString("ID_SENT", "");
        if(Sent.equals(""))
        {
            SharedPreferences.Editor editor=pref.edit();
            editor.putString("ID_SENT","NO");
            editor.commit();
            Sent=pref.getString("ID_SENT","");
        }

AsyncTask の onPostExecute で文字列がサーバーに送信された後、このコードを使用して変数 ID_SENT を YES に設定します。

                    Sent=pref.getString("ID_SENT", "");
                    if(Sent.equals("NO"))
                    {
                        SharedPreferences.Editor editor=pref.edit();
                        editor.putString("ID_SENT","YES");
                        editor.commit();
                    }

問題は、アプリを閉じてアプリを再度起動すると、ID_SENT が YES に設定されているため、文字列がサーバーに送信されないことです。

MainActivity で [戻る] ボタンが押されたときに ID_SENT を no に設定できる方法はありますか?

編集:

MainActivity の起動モードを singleTop に設定しました。そのため、別のアクティビティからホームボタンを押すたびに、アクティビティが再開されます。MainActivity は再開されるだけなので、文字列は毎回送信されません。

4

1 に答える 1

1

MainActivity で [戻る] ボタンが押されたときに ID_SENT を no に設定できる方法はありますか?

はい、

@Override
public void onBackPressed()
{
    // do your save logic here
}

またはoverride onDestroy()、Android が を破棄しActivityてメモリを再利用する場合に備えて、これはより安全かもしれません。

于 2013-03-24T03:13:09.300 に答える