在onCreate()之前做点什么?

时间:2013-06-07 09:55:42

标签: android

有没有办法在调用MainActivity的onCreate()之前做一些事情?

我们想做一些初始化的事情,比如记录......

6 个答案:

答案 0 :(得分:3)

首先创建一个用于记录目的的活动。并将其设置为启动器活动。然后在登录完成后从此活动启动主活动。

<intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

这应添加到清单中以将活动标记为启动器活动

答案 1 :(得分:3)

两个选项;

1。如果您的日志记录与即将开始的活动无关,则需要在第一个活动开始之前进行“一些”初始化,然后再继承android.app.Application。这里的onCreate方法几乎是应用程序启动时首先运行的方法。

例如,在我们的应用程序中,这是我们创建DI注入器的地方,或者决定应用程序是否需要创建数据库(“准备首次使用”)类型任务。

这似乎非常适合应用程序范围的日志记录子系统初始化...

2。如果失败了(如果你想在调用Activity的onCreate方法之前准确记录)那么这是Aspects的经典用例。我们使用AspectJ出于类似的原因以及数据库事务管理。有关如何在Android构建系统中编织所需的代码,请参阅this blog entry

答案 2 :(得分:1)

如果您参考活动生命周期,我怀疑是否可能。 enter image description here

但您可以创建一个服务或其他活动 在后台进行日志记录并将信息传递给您的主要活动!

答案 3 :(得分:0)

onCreate是第一个从活动中调用的方法...你可以在你的oncreate方法中显示你的加载屏幕设置正确的视图......

检查一下:Link

答案 4 :(得分:0)

您可以在“活动”中添加static initialization block。它将在每个进程中运行一次,第一次调用此Activity并在运行任何其他Activity方法之前。

如果您的初始化代码与此Activity无关,但与整个应用程序无关,那么最好的方法通常是创建一个延迟初始化的单例类,或者在某些情况下,可以将初始化代码添加到{{1}通过在继承Application.onCreate()

之后重写此方法

答案 5 :(得分:0)

您可以创建另一个活动并将其设置为启动器。并在那项活动中做你的事情。完成任务后,开始主要活动。