哪个Android库确定最初启动的应用程序和活动?

时间:2014-04-10 13:54:25

标签: java android netbeans-7

我正在体验我对Android开发的第一次尝试。我花了一些时间来设置环境并加载当前项目。我正在审查这个项目,而且我缺乏识别基础知识的知识。

我实际上引用了自动生成的AndroidManifest.xml来确定哪个类启动了应用程序以及哪个类最初启动。我查看了各自包中的文件,我正在尝试确定哪些导入的库正在确定这个。

对于应用程序,我认为这很明显:

import android.app.Application;

以下是AndroidManifest.xml的片段:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nlrt.sanome"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="18" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!--
        TODO: I should look into this warning about allowing backup:

            Should explicitly set android:allowBackup to true or false (it's true by default, and that can have some security 
            implications for the application's data)
    -->
    <application
        android:theme="@style/sanome_theme"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name="com.menus.SanoApplication" >



        <!-- LOGIN -->
        <activity
            android:name="com.login.LoginActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateAlwaysVisible|adjustResize"
            android:label="@string/title_activity_main_login" >

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

        </activity>



        <!-- MENUS -->
        <activity
            android:name="com.nlrt.sanome.menus.MainMenuActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name="com.nlrt.sanome.menus.SubMenuScreeningToolsActivity"
            android:screenOrientation="portrait" />

既然这是我第一次看到这段代码,我实际上不得不引用AndroidManifest.xml来了解启动该应用程序的文件。这个文件是自动生成的,所以库让它意识到这是com.menu的应用程序入口点.SanoApplication是前面提到的android.app.Application库。它是否正确?如果不是为什么?

启动实际上是从另一个包中启动另一个文件,我在清单中也注意到了。是什么让这个(com.login.LoginActivity)被识别为启动文件?那是MAIN和LAUNCHER?

我正在审核这些文件,但我缺乏知道如何在没有自动生成文件的情况下连接这些文件。

非常感谢您提供的任何帮助。

我也在寻找有关简单的Android应用程序的优秀初学者教程的建议。没有详细介绍安装步骤的原因我完成了。也没有一个是helloworld - 也完成了。有没有人有更好的建议?另外一个引用Netbeans IDE的人将非常感激。

再次感谢您提供任何帮助。

编辑//解决方案

AndoridManifest.xml不是自动生成的。午餐盒提供的链接非常清楚地说明了这一点。我的印象是每次执行Build操作时都会创建此文件。

2 个答案:

答案 0 :(得分:2)

看看以下几行:

<activity
        android:name="com.login.LoginActivity" ...>

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

您使用了intent-filter来告诉Android您的LoginActivity应该在应用程序启动时显示给用户:MAIN操作将LoginActivity指定为应用程序的入口点,LAUNCHER类别告诉android应该列出此入口点在Launcher的顶级应用程序列表中。

至于建议,我强烈建议The Busy Coder's Guide to Android Development。这是巨大的。

答案 1 :(得分:1)

  

这是对的吗?

不是我对“切入点”的定义。

  

如果不是为什么?

Application实例不是“入口点”。它只是作为你的过程启动的一部分而创建的单身人士,仅此而已。

  

是什么让这个(com.login.LoginActivity)被识别为启动文件?那是MAIN和LAUNCHER?

如果“要识别启动文件”是指“有一个图标显示主屏幕启动器”,那么是,<intent-filter>上的<activity>导致了这一点。