Android学习之路之浅谈Activity(窗口)

Activity是Android系统提供的一个可视的用户交互接口,所有和用户的交互都发生在这里。

声明和使用Activity

创建一个从android.app.Activity继承的java类或其子类继承。
然后至少要在res/layout目录中创建一个布局文件,并在AndroidManifest.xml文件声明窗口类。
布局文件是为了在窗口上放置各种控件,当然我们还可以通过其他方法在窗口上显示控件,甚至是动态添加和删除控件。
要在AndroidManifest.xml文件中声明Activity
    <activity
       android:name=".MainActivity"
       android:label="@string/appname">
       <intent-filter>
          <action android:name="android.intent.action.MAIN"/>
          <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
    </activity>
Action和Category可以在多个Activity中使用,如果一个应用程序中多个使用该Action和Category的窗口,系统会在程序列表中生成多个程序图标,每个图标对应
某一个使用android.intent.action.MAIN和使用android.intent.category.LAUNCHER的窗口。当单击某个图标后会显示与其对应的窗口。当然程序启动时会显示第一个
使用android.intent.action.MAIN和android.intent.category.LAUNCHER的窗口。
如果声明普通的Activity,就没必要非得加<intent-filter>标签了

Activity的生命周期

在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期方法。

1. onCreate()方法:在创建Activity时回调。该方法是最常见的方法,用于执行初始化。
2. onStart()方法:启动Activity时被回调,也就是当一个Activity变为显示时被回调。
3. onResume()方法:当Activity由于暂停状态恢复为活动状态时调用。调用该方法后,该Activity位于Activity栈的栈顶。该方法总是在onPause()方法之后执行
4. onPause()方法:暂停Activity时被回调。该方法需要快速的执行,因为直到这个方法执行完毕以前,下一个Activity都不能被恢复。该方法中通常用于保存数据。例如,当我们玩游戏时,突然来了一个电话,这时候就可以在该方法中,将游戏状态持久保存起来。
5. onStop()方法:停止Activity时被调用。
6. onRestart()方法:重启Activity时调用,该方法总在onStart()方法以后执行
7. onDestroy()方法:销毁Activity时调用

分别在4个阶段按一定的顺序进行调用
   开始Activity:在这个阶段依次执行3个生命周期方法,分别是onCreate、onStart和onResume。
   Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,当前的Activity会失去焦点。这一阶段执行onPause和onStop方法。
   Activity重新获得焦点:这一阶段会执行onRestart、onStart和onResume。
   关闭Activity:执行onPause、onStop和onDestroy。
如果在这4个阶段执行生命周期方法的过程不发生状态的改变,系统会按上面的描述依次执行这4个生命周期方法。
但如果发生了改变系统会按照更复杂的方式调用生命周期方法。如下图:

Activity的生命周期

   在整个Activity的生命周期中包含两层循环,
   第一层循环是onPause→onResume→onPause,第二层循环是onStop→onRestart→onStart→onResume→onPause→onStop。
   我们可以将这两层循环看成整个Activity生命周期中的子生命周期。第一层循环称为焦点生命周期,第二层称为可视生命周期。也
   就是说第一层循环在Activity焦点的获得与失去的过程中循环,在这一过程中Activity始终是可见的。第二层循环是
   在Activity可见于不可见的过程中循环,在这个过程中伴随着Activity焦点的获得与失去。因此Activity有如下3中生命周期:
  • 整体生命周期:onCreate→…….→onDestroy。
  • 可视生命周期:onStart→……→onStop。
  • 焦点生命周期:onResume→onPause。
package com.Wallace;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("onCreate", "onCreate Method is executed");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("onDestroy", "onDestroy Method is executed");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.d("onPause", "onPause Method is executed");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("onRestart", "onRestart Method is executed");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d("onResume", "onResume Method is executed");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("onStart", "onSart Method is executed");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.d("onStop", "onStop Method is executed");
    }
}

注意
在Activity的子类中实现这7个生命周期方法时应该在这些方法的一开始调用Activity类中的生命周期方法(如super.onCreate),否则系统会抛出异常。
可按如下步骤操作应用程序。

  1. 在Activity模拟机上运行程序。
  2. 按Android模拟器上的电话按钮进入”通话记录”界面,然后退出这个界面。
  3. 退出应用程序
    完成上面3步后,在LogCat视图中可以看到输出信息
    Activity生命周期的4个阶段输出的信息

Activity的属性

在Android中,Activity是作为一个对象存在的,因此,它与Androoid中其他对象类似,也支持很多XML属性,如图。
属性
我会在下一篇博客里详细的讲解Activity的XML属性。

最后希望大家喜欢我的这篇文章,由于是第一次写,借鉴的不少资料,有什么不对的希望能有读者指出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值