Android 常驻广播和非常驻广播

Android 常驻广播和非常驻广播,第1张

概述一、知识准备 ①常驻广播接受者:使用AndroidManifest.xml注册,接受者不随Activity的销毁而销毁,也就是拥有独立的生命周期。 ②非常驻广播接受者:使用registerReceiv 一、知识准备

  ①常驻广播接受者:使用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 常驻广播和非常驻广播所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存