【问题标题】:Android equivalent of: void main() / Sub Main?Android 等效于:void main() / Sub Main?
【发布时间】:2011-03-01 06:47:33
【问题描述】:

我试图让我的 Android 应用程序在从启动器运行时运行一些代码,然后再启动到活动中。也就是说,我希望我的应用程序以 Sub Main 开头,而不是先进入 Activity。

基本上,在伪中,我想做这样的事情:

void main() {
    doSomeInitializationStuff();

    startActivity(myFirstActivity);
}

根据this question 的说法,Android 从字面上看似乎没有这个概念。所以我正在考虑创建一个不可见的活动作为我的切入点,但无法弄清楚如何使活动不可见。我已经尝试了这两种方法,这似乎是我搜索中唯一出现的方法,但它们似乎并没有真正做任何事情......

this.setVisible(false); this.setTheme(android.R.style.Theme_Translucent_NoTitleBar);

【问题讨论】:

    标签: android entry-point


    【解决方案1】:

    您可以创建一个启动活动并在那里开始所有初始化,而不是创建一个不可见的活动。

    我还没有尝试过,但是您可以扩展应用程序类并在应用程序类中使用 onCreate 来初始化您需要的内容。

    这是应用程序类的 onCreate 的 JavaDoc

    /**
     * Called when the application is starting, before any other application
     * objects have been created.  Implementations should be as quick as
     * possible (for example using lazy initialization of state) since the time
     * spent in this function directly impacts the performance of starting the
     * first activity, service, or receiver in a process.
     * If you override this method, be sure to call super.onCreate().
     */
    public void onCreate() {
    }
    

    您需要通过使用 Android 清单文件标签中的 android:name 参数让应用知道您正在使用自定义应用程序类。

    【讨论】:

      【解决方案2】:

      在大多数 Android 应用程序中都有 SplashScreen 的概念,人们可以使用该屏幕来完成此类行为,而此 SplashScreen 的真正主题是在后台处理此类任务,同时为应用程序本身和与之相关的各种事情做广告

      【讨论】:

        【解决方案3】:

        一个选项是没有一个不可见的 Activity,而是一个 SplashScreen。这样做的好处是用户在应用程序启动时已经看到正在发生的事情,因此他不会觉得它没有工作。例如,请参见例如this class;你可以把 doSomeInitStuff() 放在第 54 行左右

        否则我认为,您不能在第一个活动的onCreate() 中加载布局,然后从那里转发。

        【讨论】:

        • 不,不加载布局不起作用。我试过了,我只是得到一个带有标题栏的黑屏。
        猜你喜欢
        • 1970-01-01
        • 2018-03-16
        • 1970-01-01
        • 2016-01-05
        • 1970-01-01
        • 2012-03-10
        • 2011-02-23
        • 1970-01-01
        • 2013-11-04
        相关资源
        最近更新 更多