Android四大组建
Android 四大组件之Activity
四大应用程序组件是Android应用程序中最重要的部分,分别是:Activity、Server、Content provider、BroadCast。
1、Activity
(1)Activity是Android提供和用户交互的组件,每一个activity被给予一个窗口,在上面可以绘制用户接口。
注意:必须在manifest文件声明activity,为了它可以被系统访问。例子:
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/TitleAppTheme" > <activity android:name="com.ffchat.localchat.HomeActivity" 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="com.ffchat.localchat.GridViewActivity" > activity> application>
在Activity的声明中配置对于的属性,比如:
<action android:name="android.intent.action.MAIN" />
表示应用默认进入的Activity;
<category android:name="android.intent.category.LAUNCHER" />
表示桌面是否可以显示对于的应用图标。
(2)每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Activity的生命周期可以用一张图来表示:
public class Activity extends ApplicationContext {protected void onCreate(Bundle icicle);protected void onStart();protected void onRestart();protected void onResume();protected void onFreeze(Bundle outIcicle);protected void onPause();protected void onStop();protected void onDestroy();}
(3)启动Activity的方式:
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;
比如Activity1–>Activity2–>Activity3,则任务栈为:
A、standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
B、singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
C、singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
D、singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
在AndroidManifest中配置:
android:launchMode="standard/singleTop/singleTask/singleInstance"/>
(4)Activity传递参数:
activity之间有两种参数传递形式:
一种是一个activity启动另一个activity的时候传递数据到另一个activity,然后在activity中接受到数据,做相应处理。
另一种是一个activity启动另个一activity传递数据,当另个一activity窗口关闭后,在传递数据到启动它的那个activity。
第一种传递方式(只是传递,不返回接收值):
Activity1传递参数:
Intent intent=new Intent(FirstDemoActivity.this,SecondDemoActivity.class); //可以把要传递的参数放到一个bundle里传递过去,bundle可以看做一个特殊的map. Bundle bundle=new Bundle(); bundle.putString("result", "第一个activity的内容"); bundle.putString("content",content); intent.putExtras(bundle); //也可以用这种方式传递. //intent.putExtra("result", "第一个activity的内容"); startActivity(intent);
Activity2接受数据:
Intent intent=getIntent(); String result=intent.getStringExtra("result"); String content=intent.getStringExtra("content");
第二种专递方式(Activity1再次回来的时候接收到Activity2传递的值):
Activity1传递参数:
private void pickContact(){ Intent intent=new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); //在这里也可以传递一些参数 //intent.putExtra(name, value) //第二个参数就是onActivityResult 里得第一个参数。 startActivityForResult(intent,1); } //接收值 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub if(resultCode==Activity.RESULT_OK && requestCode==1){ Cursor cusor=this.getContentResolver() .query(data.getData(), new String[]{ContactsContract.Contacts.DISPLAY_NAME}, null, null, null); if(cusor.moveToFirst()){ String str=cusor.getString(cusor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); text.setText(str); } } }
来源: http://blog.csdn.net/wangkuifeng0118/article/details/7034967
其中设置返回参数的方式:
Intent intent = new Intent();intent.putExtra(..);context.setResult(RESULT_OK, intent); context.finish();
(5)权限
A.声明Activity权限(具有指定权限的组件才可调用)
<activity android:permission="cn.itcast.permission.secondwindow" /><receiver android:permission="cn.itcast.permission.secondwindow" />
B.定义并使用权限
<permission android:name="cn.itcast.permission.secondwindow" /><uses-permission android:name="cn.itcast.permission.secondwindow"/>
来源: http://www.linuxidc.com/Linux/2012-07/65298.htm
(6)Fragment衍生物
http://blog.csdn.net/lmj623565791/article/details/37970961
本文转自一下网站,内容更丰富,详细可阅读原文:
http://blog.csdn.net/hpoi/article/details/4629065(Activity的生命周期)
http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html(Activity的栈)
http://blog.csdn.net/wangkuifeng0118/article/details/7034967(activity传递参数)
更多相关文章
- android:launcherMode
- Android(安卓)framework 系统服务的启动流程
- Android启动画面
- Android(安卓)启动流程梳理
- Android属性之build.prop,及property_get/property_set
- Android(安卓)webkit 事件传递流程详解
- Android(安卓)SDK and AVD Manage图标没找到
- Android(安卓)实现发送短信demo
- Android获取开机启动程序列表