私のアプリでは、アプリケーションの起動時にのみ文字列をサーバーに渡す必要があります。
文字列が送信されたかどうかを確認するために 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 は再開されるだけなので、文字列は毎回送信されません。