如何访问应用程序的开始(不是活动)

时间:2017-09-09 22:56:48

标签: android android-lifecycle oncreate

我需要在应用程序的开头实现非常具体的代码。

我的意思是,不是在活动的开始(onCreate()或onStart()),而是在应用程序的开头。

我有一个对我不利的解决方案,即有一个名为" MyBaseActivity"然后在我的所有活动中延伸。 这个解决方案对我不好,因为这个解决方案让我只能在每个活动的onCreate中执行一个特定的事情(我谈到的具体代码),这不是我想要的。

我希望每个活动能够根据onCreate()函数执行不同的操作,并且除了执行上面讨论过的特定代码之外。

因此,我需要访问应用程序的开头,或者你有另一个解决方案。

谢谢!

2 个答案:

答案 0 :(得分:2)

在创建应用程序/包的进程时,Application class或Application类的子类在任何其他类之前被实例化。 您需要扩展应用程序类。

public class AppApplication extends Application{
 @Override
    public void onCreate() {
        super.onCreate();
        //Do whatever you want 
    }
}

此AppApplication类应包含在清单文件中。

<application
        android:allowBackup="true"
        android:name=".AppApplication"
        android:icon="@mipmap/ic_launcher"

答案 1 :(得分:1)

  

我需要在应用程序的开头实现非常具体的代码。

每当 Android “获取请求”启动任何应用组件时(活动服务 BroadcastReceiver < / em>)并且您的应用尚未运行,它会分叉app_process(又名zygote),将其名称更改为 AndroidManifest.xml中定义的your.package.name ,初始化 Application 实例,调用其onCreate()方法,然后实例化所请求的组件并调用其生命周期方法( Activity onCreate()服务onCreate() BroadcastReceiver onReceive())。

只有Application类的单个实例才会存在,直到应用程序进程终止。也就是说,您在extended Application class中创建的任何类实例也将一直存在,直到应用程序进程被系统终止。

示例:Understanding the Android Application Class