android中broadcastreceiver的用法-manifest中注册。
2013-08-04 11:35
435 查看
package com.jinhoward.broadcast.activity; import com.jinhoward.broadcast.activity.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { protected static final String MYACTION = "com.jinhoward.broadcast.ACTION"; private Button btnBroadcast; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnBroadcast=(Button)findViewById(R.id.btnBroadcast); btnBroadcast.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent().setAction(MYACTION); Log.i("MyReceiver", "按钮被点击"); sendBroadcast(intent); } }); } }
receiver类:
package com.jinhoward.broadcast.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * @author jinhoward * @blog http://blog.csdn.net/jinhwoard */ public class MyReceiver extends BroadcastReceiver { private static final String TAG = "MyReceiver"; public MyReceiver() { Log.i(TAG, "MyReceiver的构造函数执行"); } @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "接受到广播:"+intent.getAction()); } }
manifest文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.jinhoward.broadcast.activity" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name" > <activity android:name="com.jinhoward.broadcast.activity.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> <receiver android:name="com.jinhoward.broadcast.receiver.MyReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> <intent-filter> <action android:name="com.jinhoward.broadcast.ACTION" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.RECEIVE_SMS" /> </manifest>
学习到知识:
1、非系统类的广播需要自己定义action并且自己发送广播。
2、系统自带的广播不需要定义action,也不需要发送广播,只需要注册相应的系统广播事件,进行处理即可。
3、broadcastreceiver的生命周期
A BroadcastReceiver object is only valid for the duration of the call to
onReceive(Context, Intent). Once your code returns from this function, the system
considers the object to be finished and no longer active.
This has important repercussions to what you can do in an
onReceive(Context, Intent)
implementation: anything that requires asynchronous operation is not available, because you will need to return from the function to handle the asynchronous operation, but at that point the BroadcastReceiver is no longer active and thus the system is free
to kill its process before the asynchronous operation completes.
相关文章推荐
- android中broadcastreceiver的用法-manifest中注册。
- BroadcastReceiver广播接收者(二)——利用AndroidManifest.xml注册广播接收者
- Android 广播的传递和接受 动态注册 基本用法
- android eclipse中在androidmanifest.xml注册的问题
- Android: ACTION_SCREEN_ON ACTION_SCREEN_OFF 为什么Manifest注册了却不能接收
- AndroidManifest中注册application
- NFC 注册之AndroidManifest方式
- 从AndroidManifest.xml中获取已注册Activity的方法
- 在Android Manifest中注册DownloadManager下载完成发送的广播
- android之IntentFilter的用法_Intent.ACTION_TIME_TICK在manifest.xml不起作用
- android之IntentFilter的用法_Intent.ACTION_TIME_TICK在manifest.xml不起作用
- Android(6)---AndroidManifest.xml配置文件用法小结
- 每一个activity都要在AndroidManifest.xml注册和字体
- BroadcastReceiver(一)在AndroidManifest.xml中配置的广播接收器(自动注册注销)
- 碎片(Fragment)-- AndroidManifest.xml注册问题
- android 广播,manifest.xml注册,代码编写
- 调用没有在AndroidManifest.xml注册过的Activity,报出的错误提示
- Android手动创建活动并注册AndroidManifest.xml
- android eclipse中在androidmanifest.xml注册的问题-----代码
- android 广播,manifest.xml注册,代码编写