Android程序的入口点

原创 2012年09月04日 14:30:36

    android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如android提供的发短信或者打电话的Activity.

        Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phonenumber);
        startActivity(call);
       
        Intent sms = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:"+phonenumber);
        startActivity(sms); 


    从这点上看,android应用程序实际上是由多个Activity按照一定的次序拼装起来的, 只不过拼装的过程中,后台传递了一些数据,使得各个Activity之间能比较好的衔接起来.
    在 android应用程序中,并没有像c++和java这样有main函数来作为应用程序的入口.android应用程序提供的是入口Activity,而非入口函数.
    在eclipse中创建一个android应用程序的时候,默认会创建一个Activity. 这个Activity实际上就是入口Activity了.AndroidManifest.xml文件中定义了整个android应用所包含的Activity.   默认生成的Activity的定义为
        <activity android:name=".activity01" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    action节点中的android.intent.action.MAIN表明它所在的Activity是整个应用程序的入口点.而category中的android.intent.category.LAUNCHER意思是把这个Activityg归属到加载器类,即把这个Activity标注为自动会加载和启动的Activity,这样程序启动时候就先加载这个Activity了.

    我们可以对比下eclipse中console端输出的日志来看下.初始,我把    <category android:name="android.intent.category.LAUNCHER" />这一行在原先的xml文件中注释掉了.可以看到控制台会报错"No Launcher activity found!",实际上此时在虚拟设备上的应用程序列表中找不到"lifecycle_test"这个app,而且也没法运行,根本加载不起来.后面把注释去掉,还原到最初始的状态,然后在启动应用,可以看到"No Launcher activity found!"这部分报错信息没有了,而且虚拟设备的屏幕上,可以看到"lifecycle_test"这个app已经成功运行了.


[2011-08-11 09:29:10 - lifecycle_test] ------------------------------
[2011-08-11 09:29:10 - lifecycle_test] Android Launch!
[2011-08-11 09:29:10 - lifecycle_test] adb is running normally.
[2011-08-11 09:29:10 - lifecycle_test] No Launcher activity found!
[2011-08-11 09:29:10 - lifecycle_test] The launch will only sync the application package on the device!

[2011-08-11 09:29:10 - lifecycle_test] Performing sync
[2011-08-11 09:29:10 - lifecycle_test] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'myavd_2.2'
[2011-08-11 09:29:15 - lifecycle_test] Application already deployed. No need to reinstall.
[2011-08-11 09:29:15 - lifecycle_test] \lifecycle_test\bin\lifecycle_test.apk installed on device
[2011-08-11 09:29:15 - lifecycle_test] Done!
[2011-08-11 09:30:47 - lifecycle_test] ------------------------------
[2011-08-11 09:30:47 - lifecycle_test] Android Launch!
[2011-08-11 09:30:47 - lifecycle_test] adb is running normally.
[2011-08-11 09:30:47 - lifecycle_test] Performing test.activity.leipei.activity01 activity launch
[2011-08-11 09:30:47 - lifecycle_test] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'myavd_2.2'
[2011-08-11 09:30:47 - lifecycle_test] Uploading lifecycle_test.apk onto device 'emulator-5554'
[2011-08-11 09:30:47 - lifecycle_test] Installing lifecycle_test.apk...
[2011-08-11 09:30:54 - lifecycle_test] Success!
[2011-08-11 09:30:55 - lifecycle_test] Starting activity test.activity.leipei.activity01 on device emulator-5554

[2011-08-11 09:30:57 - lifecycle_test] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=test.activity.leipei/.activity01 }   





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android四大组件(Activity详解)----如何定义程序主入口

1.应用程序的入口 如何让一个activity作为一个程序的入口.这个非常简单,我们只需要在文件manifest清单文件中注册该activity的时候,添加一个action属性即可.如下: ...

android 笔记 【一个应用程序的入口 ——Application】

Application android应用程序的入口 Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 app...
  • zcmain
  • zcmain
  • 2013年11月07日 16:52
  • 2621

Android一个应用程序设置两个入口

有些时候,我们需要为一个应用(apk)设置多个执行入口,也就是安装后,出现多个图标,各个icon是同一apk不同模块的入口,并且,各个模块运行在不同的进程中。例如系统的通讯录和通话记录就是同一个应用的...

Application是Android程序的真正入口

Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来...

Android程序的真正入口Application

接触android已经有一段时间了,一直以为android程序的入口是配置文件中指定的Activity,最近看一个开源项目,发现里面实现了android 的Application类,才知道,andro...

一个APP两个程序主入口,两个图标,互不干扰

在做项目的过程中碰到了一个需求,就是只需要两个Activity,但是两个Activity又互相不需要跳转,通过后台服务发送的广播来启动,这个时候就需要在清单文件中做文章了! ...
  • dadai_
  • dadai_
  • 2015年10月30日 14:19
  • 2364

Android一个应用(APK)多个入口的实现方式整理

Android一个应用(APK)多个入口的实现方式整理 概要: 某些情况下,需要为apk设置多个执行入口,也就是安装后在应用程序列表中出现多个图标,各个图标是APP不同模块的入口点,并且各个模块运...
  • netwalk
  • netwalk
  • 2016年03月21日 18:51
  • 3011

获取安卓应用包名和入口 Activity

获取安卓应用包名和入口 Activity

Android开发之入口Activity

Android开发之入口ActivityAdnroid App是如何确定入口Activity的?难道就因为class的类名叫MainActivity,布局文件叫activity_main.xml?如果...

JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android程序的入口点
举报原因:
原因补充:

(最多只允许输入30个字)