防止asynctask的多个实例,或者创建一个持久的布尔值

时间:2012-08-28 04:25:24

标签: android android-asynctask android-activity

我的目标是onCreate特定活动将开始运行Async-task“BackgroundTask”。   我想确保在任何给定时间只运行一个BackgroundTask,因此在调用.execute之前,我想首先检查一个布尔值是否被触发以指示另一个已经在运行。

即使应用程序当前不在屏幕上,我希望此Async-task永久运行。它只应在用户按下按钮结束它时关闭,或者强制关闭整个事物。

问题:

我是否可以通过转到主屏幕或进一步移入或移出应用程序中的所有活动来创建布尔值永远不会被重置的布尔值?
我不太清楚Android何时或为何失去在应用程序中保存的变量。

1 个答案:

答案 0 :(得分:1)

您可以在首选项中保存此布尔值,如下所示:

        boolean booleanValue = true;
    String somePreferencesKey = "SOME_PREFERENCES_KEY";
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
    pref.edit().putBoolean(somePreferencesKey, booleanValue).commit();

然后,在将来的任何时候,您都可以从保存的首选项中获取保存的布尔值,如下所示:

        boolean booleanValue;
    String somePreferencesKey = "SOME_PREFERENCES_KEY";
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
    booleanValue = pref.getBoolean(somePreferencesKey, false);

希望这能解决你的问题。

谢谢,

穆罕默德。

相关问题