java - 专用 Android Activity 为应用程序初始化数据和库

标签 java android android-activity initialization

我的应用程序使用各种繁重的库和数据文件,需要在启动时加载/与本地存储同步。由于此操作需要一些时间,因此我正在考虑为此目的创建一个专门的 Activity 。此 Activity 将是应用程序的入口点,并将执行以下操作:

  • 显示背景图片和进度条
  • 处理必要的数据(并相应地更新进度条)
  • 完成后,启动新 Activity

这里有几个问题:

  • 我的初始化 Activity 需要将对数据的引用传递给它的子 Activity 。通常我会使用 setSerializable 来执行此操作,但在这里我使用的是第 3 方不可序列化的类。

所以我想简单地让数据静态化。这是一个好的解决方案吗?在切换 Activity 时或在应用程序生命周期期间,静态引用是否有可能中断?

public class LibraryInitializer {

   private static Some3rdPartyClass myLib;

   public static void initialize(){ // Called by initialization activity
      myLib = Some3rdPartyClass.create();
   }

   public static Some3rdPartyClass getMyLib(){ // Called by child activity
      return myLib;
   }
}
  • 我只需要调用一次初始化 Activity 。当用户点击后退按钮时,如何防止它再次显示?

更一般地说,这种方法是否可行,或者您会建议更好的方法? (我也考虑过使用一个 Activity ,但动态添加/删除进度条和背景)

最佳答案

长时间运行的代码确实应该使用 Android services 来完成.我建议在您的各种“Activity ”类(对应于您的应用程序的 View )简单使用的服务中执行复杂的逻辑。服务可以比应用程序的 UI 生命周期更长,也可以启动/初始化以响应各种其他事件(如系统启动),即使用户没有与应用程序交互,而 Activity 与演示文稿紧密交织在一起。

在加载/同步数据方面,我强烈建议不要将此逻辑放入您的 Activity 代码中...而是使用 SyncAdapter或用于同步的其他调度机制之一。这将确保同步 Activity 与网络芯片的其他用途分批进行,从而最大限度地减少整体电池使用量,并且还允许您在用户主动使用您的应用程序之前进行同步,这样您就不会让用户在他们使用时等待打开您的应用。

关于java - 专用 Android Activity 为应用程序初始化数据和库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184825/

相关文章:

java - Libgdx - 输入处理 [Android]。关于听众,我有什么不明白的?

java - 后退按钮无法正常工作 - Android

android - 在 AsyncTask 的 doInBackGround() 中启动一个新的 Activity

android - 你如何让 Android "Home"快捷方式绕过它指向的应用程序的历史记录?

android - 查看其他 Android 应用产生的网络流量

java - authentication.getName() 在自定义 AuthenticationProvider 中返回 null

java - 将 Maven 依赖项添加到我的 Maven 项目时找不到资源

android - 按下放大镜时如何调用onSearchRequested

php - 只允许特定协议(protocol)查看网页

java - 如何设置一个 JFrame 中两个 JPanel 的大小?