Android 四大核心组件之Activity详解

Activity 概念:

          应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。

Activity的三个状态:

          运行状态(显示在主屏幕上,可见)、停止状态(不可见)、暂停状态(被其他的Activity遮蔽一部分)

Activity的生命周期 (7大方法):

          

Activity的操作:

            

1.配置属性:Application有一个主的Activity来作为入口,由它启动其他的Activity

创建一个新的Activity,必须在配置文件中,申明一个Activity。

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />

    </intent-filter>

</activity>

android.intent.action.MAIN 表示此Activity为App的入口;

android.intent.category.LAUNCHER则表示此入口为系统的图标或快捷方式启动;


但App并不只能有一个入口,也有可能是由intent-filter打开方式启动app。

 

创建一个简单的Activity

1.         第1步:创建继承于Activity的子类,作为实现Activity的逻辑代码。

2.         第2步:在AndroidManifest.xml文件中在Application节点内创建以下片断,一般用IDE创建时,都已经自己生成对应的XML。

<activity android:name=".activity.Second"></activity>

3.         第3步:在主Activity中调用新的Activity。

startActivity(new Intent(this,Second.class));

一般建议调用Activity的方法由新的Activity(Second类)的静态方法来提供,而调用时,只需传递入对应的参数,由新的Activity来组成Intent进行调用,这样可以把逻辑都放于对应的Activity,代码会显得更加清晰。如以下代码(摘自K-9 Mail开源代码:

public static void actionSettings(Context context, Account account) {

                   //在这里组装一个Intent

        Intent i = new Intent(context, AccountSettings.class);

                   //加入对应需要的数据,放于Intent里面

        i.putExtra(EXTRA_ACCOUNT, account.getUuid());

                   //启动对应的Activity

        context.startActivity(i);

    }

 

Activity的显示顺序队列遵循栈的模型

后入先出,最前打开的Activity在最上面

在同一个app里面每一个Activity被启动后,原来的Activity将会被放入到 Activity返回顺序栈 里面,如图(摘自Android网站):

1、  启动主Activity,可能是用系统的图标启动,也可能是用Intent-filter启动,此时Activity 1就被放入到 Activity返回顺序栈中。

2、  当点击“Start Activity 2”按钮时,系统将拉起新的Activity 2,此时Activity 2将被放入到栈中;

3、  当点击“Start Activity 3”按钮时,系统将拉起新的Activity 3,此时Activity 3将被放入到栈中;

4、  当点击返回按钮时,系统将会把Activity 3退出,返回到Activity 2;

当Finish()的Activity将不会放入到队列中

如图:

1、  主Activity被拉起;

2、  主Activity拉起Activity 1,此时栈中显示如2;

3、  当Activity 1 拉起 Activity 2后,调用了finish()方法,则Activity 1 将不会被放入到栈中,而是直接结束了生命周期,而Activity 2 则被放入栈中,当再次按返回键时,则返回到主Activity;

 

针对目前有许多的app需要按多次返回键后才能退出,有时还是在同一Activity界面出现多次,可以使用此方法进行解决,例如以下代码:

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.custom);

        startActivity(new Intent(this,Second.class));

        finish(); //启动后直接调用finish()方法结束生命周期

}


 


             


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值