android之Activity

来源:互联网 发布:波波虎网络家庭影院 编辑:程序博客网 时间:2024/06/17 14:17

一、什么是Acitivity

Activities是一个程序的组件之一。它的主要功能是提供界面。

一个程序一般由多个Activity组成,各Activity之间关系很松散,它们之间没有直接的关联。必须有一个Activity被指定为主Activity,它是程序启动时首先显示的界面。每个Activity都可以随意启动其它的Activity。每当一个Activity被启动,则前一个Activity就被停止。一个程序中的所有启动的Activity都被放在一个栈中,所以被停止的Activity并没有销毁,而在存于栈中。新启动的Activity先被存放于栈中,然后获得输入焦点。在当前活动的Activity上点返回键,它被从栈中取出,然后销毁,然后上一个Activity被恢复。

       当一个Activity因为新的Activity启动而被停止时,它会收到状态变化的通知,这样的变化有多个,每个都会引起系统调用一个相应的回调方法以通知Activity,这些回调方法被统称为生命周期回调方法。这些回调方法分别在Activity被创建、停止、恢复、销毁时被调用。

二、如何创建Activity

1、创建一个Activity类的子类。

2、在清单文件AndroidMainfestapplication标签中注册此Acitivity

       例、

<activityandroid:name="com.example.myfirstapp.MainActivity"></activity>

       如果我们要把新建的Activity作为程序的入口时,那么我们就要在此Acitivity的标签中加入一个intent-fileter标签

       例、

<activityandroid:name="com.example.myfirstapp.MainActivity"><intent-filter>                     <actionname="android.intent.action.MAIN"/>                     <category name="android.intent.category.LAUNCHER"/>                     </intent-filter></activity>

android.intent.action.MAIN是说明此Acitivity是程序的入口,android.intent.category.LAUNCHER表示此入口为系统图标或快捷方式启动。

 

三、为Acitivity添加布局

       res/layout下创建一个xml格式的布局文件,并选定它拥有的布局方式(四种布局方式LinearLayoutRelativeLayoutAbsoluteLayoutFrameLayoutTableLayout)。

然后根据自己的意愿来添加控件(按钮、文本框、输入框等)。


四、从一个Activity启动到另一个Activity

       创建一个Intent并指明要从哪个Acitivity跳转到哪个Activity,然后利用startActivity的方法来实现此跳转。

例、

Intent intent_toSecondActivity = new Intent(MainActivity.this,SecondActivity.class);startActivity(intent_toSave);

这样就可以实现由MainAcitivity跳转到SecondActivity

 

有时,你可能想从你启动的activity获得其执行后返回的结果。那么我们可以使用startActivityForResult()来启动新的Activity(不再使用startActivity),然后,你的程序还需要定义回调方法onActivityResult()。当新的Activity运行结束时,他把一个intent返回给你的程序,这个intent是在onActivityResult()中被接收的。

例、要实现从MainActivity启动到SecondActivity,返回时使MainActivity刷新数据

 

MainActivity部分代码:

Public void startScendActivity(){Intent intent = new Intent(MainActivity.this,SecondActivity.this);startActivityForResult(intent,1);}@Override       protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) {              //              super.onActivityResult(requestCode,resultCode, data);              //判断请求码              if(requestCode== 1){                     //判断结果码                     if(resultCode== 2){                            //刷新数据                            refreshView();                     }              }       }

SecondActivity部分代码:

<span style="font-size:10px;">SetResult(2);Finish();</span>

五、Activity的生命周期

 

Activity7个基本的生命周期(onCreateonStartonResumeonPauseonStoponDestroyonRestart)。

onCreate Activity被创建的时候,做一些数据的初始化工作。

onStart界面被创建的时候, onStart方法执行完毕后,我们就可以在屏幕上看到界面,此时为用户可见不可操作的状态。

onResumeonResume方法执行完毕后,我们就可以通过屏幕对Activity进行操作了

onPauseActivity被部分遮盖时,变为用户可见但不可操作的状态。

onStopActivity被完全被遮盖,或退到后台。

onDestroy这是Activitykill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它结束掉。

onRestartonStop状态回到运行状态,需要执行的第一个生命周期。

 

在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activitykill掉的时候方法顺序是onPause -> onStop -> onDestroy,此为一个完整的生命周期。那么对于中断处理(比如电话来了),则是onPause -> onStop,恢复时onRestart->onStart -> onResume;如果当前应用程序的是一个ThemeTranslucent(半透明)或者DialogActivity那么中断就是onPause ,恢复的时候onResume

0 0
原创粉丝点击