传智播客--3G开发之添加多Activity和数据传递,Activity生命周期,广播,服务

转载:http://blog.csdn.net/getclass/archive/2010/03/05/5350740.aspx

==================================================================================

1.添加新的Activity

1)新建一个继承Activity的类

2)在AndroidManifest.xml文件中添加:<activityandroid:name=".NewActivity"android:label="新activity的页面标题"/>

总结:

--android:name属性值的前面加了一个点表示NewActivity是当前包cn.itcast.action下的类

2.打开新的Activity

1)不传递参数:startActivity(newIntent(MainActivity.this,NewActivity.class));

2)传递参数:

Intentintent=newIntent(MainActivity.this,NewActivity.class)

携带数据:Bundlebundle=newBundle();

设置具体数据:bundle.putString("name","传智播客");

将数据添加到意图中:intent.putExtras(bundle);

将意图通知操作系统:startActivity(intent);

3)接收参数:

得到激活当前意图的意图:Bundlebundle=this.getIntent().getExtras();

Stringname=bundle.getString("name");

4)得到新打开Activity关闭后返回的数据

在调用端的Activity:

startActivityForResult(newIntent(MainActivity.this,NewActivity.class),1);

重写onActivityResult(intrequestCode,intresultCode,Intentdata)方法

在被调用端的Activity:

数据是使用Intent返回:Intentintent=newIntent();

返回数据存入Intent:intent.putExtra(“result”,“传智播客的学生很可爱”);

设置返回数据:NewActivity.this.setResult(RESULT_OK,intent);

关闭Activity:NewActivity.this.finish();

总结:

--显式意图:第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类

--最后不要忘记将意图通知操作系统

--Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值

--传递参数时可以不用Bundle类.intent.putExtras("name","传智播客");

--请求码:区分那个Activity的哪个按钮的请求.

--结果码:区分是哪个Activity返回的结果.

3.Intent(意图)

总结:

--Intent提供了一种通用的消息系统,为了减少耦合.

--Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。

--Intent分成显式意图和隐式意图

--显式意图:明确指定Intent传递给哪个组件

--隐式意图:Android系统根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

4.Activity生命周期

1)Activity三个状态:

运行状态:当前可以使用的Activity

暂停状态:能看到的Activity,但失去焦点.

停止状态:看不到的Activity,被别的Activity覆盖了.

2)Activity中的7种方法:

voidonCreate(BundlesavedInstanceState)

voidonStart()

voidonRestart()

voidonResume()

voidonPause()

voidonStop()

voidonDestroy()

3)Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。

4)Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。

5)Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。

5.照相机的操作

总结:

--照相机一定要记得,在不用的时候要释放.

6.广播接收者

1)继承BroadcastReceiver,并重写onReceive()方法。

publicclassIncomingSMSReceiverextendsBroadcastReceiver{

@OverridepublicvoidonReceive(Contextcontext,Intentintent){

}

}

2)订阅感兴趣的广播Intent,订阅方法有两种:

-使用代码进行订阅

IntentFilterfilter=newIntentFilter("android.provider.Telephony.SMS_RECEIVED");

IncomingSMSReceiverreceiver=newIncomingSMSReceiver();

registerReceiver(receiver,filter);

-在AndroidManifest.xml文件中的<application>节点里进行订阅:

<receiverandroid:name=".IncomingSMSReceiver">

<intent-filter>

<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>

3)接收电池电量变化广播Intent

-<actionandroid:name="android.intent.action.BATTERY_CHANGED"/>

4)接收开机启动广播Intent

-<actionandroid:name="android.intent.action.BOOT_COMPLETED"/>

总结:

--广播接收者是用在异步接收广播意图的.

--就是一个意图,可以被多地方接收.

--可以利用广播接收者监听短信

--当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。

--通常一个BroadcastReceiver对象的生命周期不超过5秒

7.服务

1)继承Service类:publicclassSMSServiceextendsService{}

2)在AndroidManifest.xml文件中的<application>节点里对服务进行配置:

<serviceandroid:name=".SMSService"/>

总结:

--服务一般没有用户操作界面,它运行于系统中不容易被用户发觉

--服务不能自己运行

相关推荐