【问题标题】:How to access a start of Application (not Activity)如何访问应用程序的启动(不是活动)
【发布时间】:2017-09-09 22:56:48
【问题描述】:

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

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

我有一个对我不利的解决方案,即拥有一个名为“MyBaseActivity”的基本活动,然后在我的所有活动中扩展它。 这个方案对我不好,因为这个方案让我在每个activity的onCreate中只能做一件特定的事情(我讲的具体代码),这不是我想要的。

我希望每个活动都能够根据它们的 onCreate() 函数做不同的事情,并且除了执行我上面谈到的特定代码之外。

因此,我需要访问应用程序的启动,或者您有其他解决方案。

谢谢!

【问题讨论】:

    标签: android android-lifecycle oncreate


    【解决方案1】:

    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"
    

    【讨论】:

      【解决方案2】:

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

      每当Android“收到请求”以启动您的任何应用组件(ActivityServiceBroadcastReceiver) 并且您的应用程序尚未运行,它派生出app_process(又名zygote),将其名称更改为在AndroidManifest.xml 中定义的your.package.name,初始化一个Application 实例,调用其onCreate() 方法,然后实例化请求的组件并调用其生命周期方法(ActivityonCreate()ServiceonCreate()BroadcastReceiveronReceive())。

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

      示例:Understanding the Android Application Class

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多