java - 哪个 Android 库决定最初启动的应用程序和 Activity?

标签 java android netbeans-7

我正在体验 Android 开发的初体验。我花了一些时间来设置环境并加载当前项目。我正在审查该项目,但我缺乏认识基础知识的知识。

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

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

import android.app.Application;

这是 AndroidManifest.xml 的一个 fragment :

<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的库。它是否正确?如果不是,为什么?

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

我正在审查这些文件,但我缺乏了解它们在没有自动生成文件的情况下如何连接的知识。

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

我也在寻找有关处理简单 android 应用程序的优秀初学者教程的建议。没有一个详细说明安装步骤,因为我已经完成了。也没有一个是 helloworld - 也完成了。有没有人有更好的建议?还有一个引用 Netbeans IDE 的人将不胜感激。

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

编辑//解决方案

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

最佳答案

看看这些行:

<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 该入口点应该被列出在启动器的顶级应用程序列表中。

至于推荐,我强烈推荐The Busy Coder's Guide to Android Development .这是不朽的。

关于java - 哪个 Android 库决定最初启动的应用程序和 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990102/

相关文章:

java - 什么是 J2ME 兼容的 WebDAV 库?

java - 像 ATG Dynamo 应用程序框架这样的框架

java - NoClassDefFound错误: L => "L" added to import path by 'system' creates error

java - 为什么我的 TopComponent 上的 JavaFX 内容消失了?

java - 如何获取Android模拟器当前的日期格式

c++ - 是否可以在 C++ 中使用小程序

java - 通过故障转移使长时间运行的任务仅在集群的一台机器上运行?

java - 将 Java 线程 ID 与 native Linux PID 匹配

android - 如何在 IntentService 类的 onHandleIntent() 方法中打开对话框

android - 播放时,Youtube Android/IOS SDK似乎不计算观看次数