安装应用程序后如何仅执行一次后台任务

时间:2019-02-03 14:11:54

标签: android android-service android-workmanager

问题: 我有一个场景,在该应用程序的首次启动中,我需要将一些数据上传到服务器。即使用户立即退出应用程序,上传任务也应完成。不必总是执行此任务,而只需在App启动期间的第一次。

我尝试过的事情:

我目前正在为此目的使用服务。我在App启动期间启动了粘性服务,并在Service中完成了这项工作。因此,即使用户立即退出该应用程序,我的服务也会重新启动,并且我将重试上传过程。

但是在这里,我需要在共享首选项hasUploadDone中保留一个布尔型标志,以记住上载过程是否已经完成,尽管在大多数应用程序启动过程中不需要,但都需要在每次启动过程中进行检查时代。 我认为这不是一个好方法。除了此服务之外,还有没有更好的方法来处理这种情况-布尔标志组合?使用工作管理器或其他更好的方法可以实现?

谢谢!

1 个答案:

答案 0 :(得分:0)

为此使用“共享首选项”:

在您的MainActivity中

@Override
public void onStop() {
    super.onStop();
    SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    editor.putBoolean("previouslyStarted", true);
    editor.commit();
}

然后在您的onCreate方法中
如果您的应用是在“共享的首选项”之前启动的,则它将“ previouslySaved”的值保存为“ true”,否则它将默认为“ false”

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
previouslyStarted = saved_values.getBoolean("previouslyStarted", false);

使用其他方式检查您的申请是否是首次提出

if (previouslyStarted) {
    //App has been started previously.
}
else {
   //App started for the first time.
   //Upload your data here.
}