Java 专门用于初始化应用程序数据和库的Android活动

Java 专门用于初始化应用程序数据和库的Android活动,java,android,android-activity,initialization,Java,Android,Android Activity,Initialization,我的应用程序使用各种繁重的库和数据文件,这些库和文件需要在启动时加载/与本地存储同步。由于此操作需要一些时间,我正在考虑为此目的创建一个专门的活动。此活动将是应用程序的入口点,并将执行以下操作: 显示背景图像和进度条 处理必要的数据(并相应地更新进度条) 完成后,启动一项新活动 这里有几个问题: 我的初始化活动需要将对数据的引用传递给它的子活动。通常我会使用setSerializable来实现这一点,但这里我使用的是第三方非序列化类 所以我只是想让数据保持静态。这是一个好的解决方案吗?在

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

  • 显示背景图像和进度条
  • 处理必要的数据(并相应地更新进度条)
  • 完成后,启动一项新活动
这里有几个问题:

  • 我的初始化活动需要将对数据的引用传递给它的子活动。通常我会使用
    setSerializable
    来实现这一点,但这里我使用的是第三方非序列化类
所以我只是想让数据保持静态。这是一个好的解决方案吗?在切换活动或应用程序生命周期期间,静态引用是否有可能中断

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;
   }
}
  • 我只需要调用一次初始化活动。如何防止在用户单击“后退”按钮时再次显示

更一般地说,这种方法可以吗,或者你会建议一种更好的方法吗?(我还考虑使用单个活动,但动态添加/删除进度条和背景)

当从加载活动启动新活动时,调用finish()方法关闭该活动,它将从应用程序活动堆栈中删除。如下图所示:

startActivity(intent);
finish();

对于通过活动传递数据的问题,请扩展Android应用程序类,您可以在其中定义应用程序的全局状态和变量

长时间运行的代码确实应该使用。我建议您在服务中执行复杂的逻辑,而您的各种“活动”类(对应于您的应用程序的视图)只是使用这些服务。服务可以超过应用程序的UI,也可以响应各种其他事件(如系统启动)启动/初始化服务,即使用户没有与应用程序交互,而活动与表示紧密交织


在加载/同步数据方面,我强烈建议不要将此逻辑放在活动代码中。。。相反,请使用一个或另一个调度机制进行同步。这将确保同步活动与网络芯片的其他用途分批进行,从而最大限度地减少电池的总使用量,还允许您在用户积极使用应用程序之前进行同步,这样您就不会让用户在打开应用程序时等待。

谢谢。您能否就如何扩展应用程序类给出更多的细节?(要使用此方法,我必须在我的活动/清单中更改哪些内容?)