仅在Android应用程序启动时执行任务

时间:2013-03-24 03:06:13

标签: android android-activity sharedpreferences

在我的应用程序中,我希望只在应用程序启动时将字符串传递给服务器。

我使用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。

那么有什么方法可以让我在将Main_Sctivity按下后退按钮时将ID_SENT设置为no?

修改

我将MainActivity的启动模式设置为singleTop。因此,每当我从其他活动按下主页按钮时,现在活动将恢复。并且每次都不会发送字符串,因为MainActivity仅会恢复。

1 个答案:

答案 0 :(得分:1)

  

那么有什么方法可以让我在将Main_Sctivity按下后退按钮时将ID_SENT设置为no?

是的,

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

或者您可以override onDestroy(),如果Android销毁Activity以回收内存

,这可能会更安全