问题: 我有一个场景,在该应用程序的首次启动中,我需要将一些数据上传到服务器。即使用户立即退出应用程序,上传任务也应完成。不必总是执行此任务,而只需在App启动期间的第一次。
我尝试过的事情:
我目前正在为此目的使用服务。我在App启动期间启动了粘性服务,并在Service中完成了这项工作。因此,即使用户立即退出该应用程序,我的服务也会重新启动,并且我将重试上传过程。
但是在这里,我需要在共享首选项hasUploadDone
中保留一个布尔型标志,以记住上载过程是否已经完成,尽管在大多数应用程序启动过程中不需要,但都需要在每次启动过程中进行检查时代。
我认为这不是一个好方法。除了此服务之外,还有没有更好的方法来处理这种情况-布尔标志组合?使用工作管理器或其他更好的方法可以实现?
谢谢!
答案 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.
}