①常驻广播接受者:使用AndroIDManifest.xml注册,接受者不随Activity的销毁而销毁,也就是拥有独立的生命周期。
②非常驻广播接受者:使用registerReceiver(receiver,intentfilter)对广播接收者进行注册。同事需要使用unregisterReceiver(receiver)注销这个广播接收者。注册时表示创建广播接收者,注销时表示销毁这个广播接收者。生命周期由开发者决定。通常在activity的onCreate方法中创建广播接收者,在onDestroy中销毁广播接收者。生命周期可控。
③建议了解http://www.cnblogs.com/xqz0618/p/msg_broadcast.HTML
二、项目案例一【标题】利用非常驻广播接受收到短信的广播【步骤】①创建一个广播NReceiver
②在Activity中进行注册
③在Activity销毁时注销
【项目结构】【NReceiver】
【MainActivity】
1 import androID.Manifest; 2 androID.content.broadcastReceiver; 3 androID.content.IntentFilter; 4 androID.content.pm.PackageManager; 5 androID.support.v4.app.ActivityCompat; 6 androID.support.v4.content.ContextCompat; 7 androID.support.v7.app.AppCompatActivity; 8 androID.os.Bundle; 9 androID.util.Log;10 11 com.example.administrator.myapplication.receiver.NReceiver;12 13 public class MainActivity extends AppCompatActivity {14 15 broadcastReceiver receiver = null;16 17 @OverrIDe18 protected voID onCreate(Bundle savedInstanceState) {19 super.onCreate(savedInstanceState);20 setContentVIEw(R.layout.activity_main);21 getpermission();22 23 registerbroadcast();24 25 }26 27 private getpermission() {28 if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_SMS)29 != PackageManager.PERMISSION_GRANTED||ContextCompat.checkSelfPermission(MainActivity.30 !=PackageManager.PERMISSION_GRANTED){31 ActivityCompat.requestPermissions(MainActivity.this,new String[]{32 Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS33 },1);34 }35 36 37 registerbroadcast() {38 receiver = NReceiver();39 IntentFilter filter = new IntentFilter("androID.provIDer.Telephony.SMS_RECEIVED"40 registerReceiver(receiver,filter);41 Log.i("TAG","registerbroadcast: ---------register"42 43 44 45 onDestroy() {46 .onDestroy();47 unregisterReceiver(receiver);48 49 }
【提示】由于是要接收短信的广播,所以需要获取权限
【AndroIDManifest】1 <uses-permission androID:name="androID.permission.READ_SMS"></uses-permission>2 ="androID.permission.RECEIVE_SMS">
【提示】非常驻型广播无需在AndroIDManifest中进行注册广播。
【效果】①利用模拟器开发工具模拟发送信息
②将APP完全退出,再发送信息,不再收到提示
二、项目案例二【标题】常驻型广播接收收到短信的广播
【提示】再项目一得基础上修改
【AndroIDManifest】注册1 receiver2 =".receiver.NReceiver"3 androID:enabled="true"4 androID:exported="true"5 intent-filter 6 action ="androID.provIDer.Telephony.SMS_RECEIVED"action7 </intent-filter8 receiver>
【MainActivity】【提示】由于常驻型广播已经在AndroIDManifest注册,则无须利用registerReceiver(receiver,intentfilter)进行注册和销毁。Activity中只需进行动态权限的申请
2 3 broadcastReceiver receiver = 4 6 7 13 14 15 != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(MainActivity.16 != PackageManager.PERMISSION_GRANTED) {17 ActivityCompat.requestPermissions(MainActivity.18 19 },1)">23 }
【效果】
总结
以上是内存溢出为你收集整理的Android 常驻广播和非常驻广播全部内容,希望文章能够帮你解决Android 常驻广播和非常驻广播所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)