Android开发学习笔记之四大组件---Activity的介绍,创建以及生命周期(一)

最近重新温习关于android开发的基础知识,还是分享到博客里,一方面分享给有需要的同学,一方面方便自己后期查看

 

一、什么是Activity

通俗来讲,一屏的界面就是一个Activity,套用比较教科的话,在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信,Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件

 

二、怎么创建一个Activity

在代码中创建一个Activity可以分为三步,也即是一个Activity需要三个部分组成

第一个部分是Activity的界面部分,界面文件是一个xml文件,在这个文件中我们可以调整该Activity中的布局,增加各种控件等等,布局文件位于工程下res/layout文件夹中,打开这个文件,各功能如下图:

需要添加控件,在左边控件列表中选择想要添加的控件,左键点住拖动到右边视图界面上,该控件就会添加至Activity布局中,以上面图为例,界面中的button是我添加的一个按钮控件,我们来看一下代码:

button中有一个onClick属性这个是后话,我们后面介绍,到此,一个Activity的UI部分我们就创建好了

 

第二个部分,我们需要创建Acitivity的逻辑部分,实现部分,并且将逻辑交互的类和UI进行关联,逻辑部分的代码路径基本都在src下的各package中创建,我们来看代码:

 
关于给控件添加点击事件,有两种方法
第一种就是编写点击事件方法后,在控件属性中添加onClick属性去指定
第二种创建一个点击事件监听器,并实现监听器的onClick方法,然后使用控件的setOnClickListener方法去将监听器绑定到对应控件上,代码如下:
public class Start  extends android.app.Activity{

@Override

  public void onCreate(Bundle savedInstanceState)
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btn1=(Button) findViewById(R.id.startTest);    //定位控件
    btn1.setOnClickListener(my);   //为按钮绑定监听器
 }

//实例化一个监听器并重写onClick
 private OnClickListener my=new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Log.e("baih", "=======================================================");
        Runtime run=Runtime.getRuntime();
        try {
            run.exec("am instrument --user 0 -w suileyTest.baih/baih.InstrumentationTestRunner");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
};
}

 

第三部分,现在逻辑实现有了,界面有了,我们需要把这个Activity在manifest中注册,manifest是整个程序的配置文件,如果组件不在其中进行注册,程序是不认的,注册方法如下:

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity
            android:name=".ErActivity"
            android:label="er">            
        </activity>

在manifest中的application节点下新增一个activity节点,带上activity的各项属性,即注册了一个Activity,属性包括name(填写Activity的类名),label(Activity标题),以及可以使用intent-filter进行权限的声明

至此,一个Activity就创建好了,这时运行程序,Activity就可以正常展示,并且可以简单的与你进行交互了

 

 

Activity的生命周期

一个Activity从启动,到被置为后台,到被关闭,过程对应着自己的一套生命周期,总的来说,一个Activity的状态有以下几种

onCreate; onStart; onRestart; onResume; onPause; onStop; onDestroy

而Activity的活动场景又分为以下几种

1.Activity启动

2.按HOME键,应用程序被置为后台进程

3.将该程序从后台唤醒到前台

4.Activity A中有一个点击事件,点击后启动Activity B,启动后Activity A的活动变化

5.Activity前台时,按back关闭Activity

我们做一个小实验,来通过log来演示各场景的活动变化过程

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("baih", "运行了onCreate");
    }
    
    @Override
    public void onStart(){
        Log.e("baih", "运行了onStart");        
        super.onStart();
    }
    
    @Override
    public void onRestart(){
        Log.e("baih", "运行了onRestart");
        super.onRestart();
    }
    
    @Override
    public void onResume(){
        Log.e("baih", "运行了onResume");
        super.onResume();
    }
    
    @Override
    public void onPause(){
        Log.e("baih", "运行了onPause");
        super.onPause();
    }
    
    @Override
    public void onStop(){
        Log.e("baih", "运行了onStop");
        super.onStop();
    }
    
    @Override
    public void onDestroy(){
        Log.e("baih", "运行了onDestroy");
        super.onDestroy();
    }
    
    public void buttonclick(View v){
        Log.e("baih", this.getClass().getName());
        Intent in=new Intent(this,ErActivity.class);
        startActivity(in);
        AlertDialog.Builder bu=new AlertDialog.Builder(this);
        bu.setTitle("一个dialog测试");
        bu.setPositiveButton("确定",new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog,int whichButton)
            {
                Toast.makeText(getApplicationContext(), "点击了确定", 3000).show();
            }
        }); 
        bu.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this, "点击了取消", 3000).show();
            }
        });
        
        bu.create().show();
            
        }
    }

1.Activity启动

2.按HOME键将Activity置为后台

3.将该程序从后台唤醒到前台

4.Activity A中有一个点击事件,点击后启动Activity B,启动后Activity A的活动变化

5.Activity前台时,按back关闭Activity

 

通过上面的实现,我们可以看到一个Activity在不同活动下的状态执行流程,onCreate方法是Activity的初始化方法,一般在其中,进行view的指定,数据源的绑定,等等关乎该Activity进行数据或者界面初始化时需要进行的操作,onDestroy是该Activity结束的方法,一般在其中,进行关闭Activity的操作,比如关闭程序时需要清除缓存,关闭service等等,具体的实际应用大家可以在应用中针对不同活动的需求,在对应的生命周期环节添加适当的操作,既然有Activity的切换,就存在Activity之间的传值问题,以及Activity的部分操作,这个下一节继续BiBi~

 

 

 

 

 

 

 

posted @ 2014-11-21 10:10  渺小  阅读(345)  评论(0编辑  收藏  举报