0

我的应用程序有 3 个活动 - 主菜单、子菜单、详细信息。每次应用程序恢复时,我都想得到一些提示,以便我可以开始下载一些文件。

现在我正在做的是 - 在每个活动onResume中,我检查下载是否已经在进行。如果不是,那么我开始下载。这样,每当我开始下一个/上一个活动时,如果下载没有继续,它就会开始下载。意思是,一旦下载完成,用户导航到下一页,重新开始下载。

我想防止这种行为,否则会有不必要的互联网使用。

如果我维护一个跟踪下载状态的全局(应用程序级别)变量,即使在我恢复应用程序之后,该值也不会重新设置。

关于如何获得onResume应用程序的任何建议。

4

3 回答 3

2

那么在开始下载过程之前检查下载的内容怎么样?有多种方法可以做到这一点,您没有提供有关要下载的内容性质的太多详细信息。

例如:检查 FS 中下载的文件,在某处设置一个持久标志(使用 SharedPreferences、SQLite db 等)来标记内容是否已下载,等等。

于 2012-11-09T09:39:27.280 回答
1

你不能。应用程序不会恢复。该应用程序仅创建和销毁。这些活动具有复杂的生命周期。

对我来说最好的方法似乎是每个 Activity 绑定到 onResume 的服务,并且该服务负责下载。

于 2012-11-09T09:38:23.280 回答
1

您可以使用 SharedPreferences 来存储数据,例如:

下载完成后:

  SharedPreferences settings = getSharedPreferences(MY_PREF, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putBoolean("download_done", true);

如果您想检查下载是否从另一个活动完成:

   SharedPreferences settings = getSharedPreferences(MY_PREF, 0);
   boolean downloadDone = settings.getBoolean("download_done", false);
   if (!downloadDone) {
   // Code to start/resume download.
   }

您可以从任何活动、服务等中使用它。有关更多详细信息,请访问此处

于 2012-11-09T09:40:04.843 回答