Android广播(BroacastReceiver)与服务(Service)

Posted mcarryoung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android广播(BroacastReceiver)与服务(Service)相关的知识,希望对你有一定的参考价值。

BroadcastReceiver可以理解成是一种组件,是默默的在改后台运行的,用于在不同软件和不同组件之间的传递,无法被用户感知,因为他在系统的内部工作,BroadcastReceiver被称为广播。

  一、广播的注册有两种方式: 

    1、动态注册,使用Java代码进行注册

    2、静态注册,需要在androidMainfest进行注册

  二、我们先来讲解下如何静态注册:

    1、我们先来创建一个继承BroadcastReceiver的类,实现onReceive方法,为了更好的体验,我们在这个方法里面弹一个吐司

     onReceive在接受到广播后会触发

 1 public class MsgService extends BroadcastReceiver {
 2 
 3     private String ACTION_SGC = "android.intent.action.BOOT_COMPleTED";
 4 
 5     @Override
 6     public void onReceive(Context context, Intent intent) {
 7         if(ACTION_SGC.equals(intent.getAction())){
 8             Toast.makeText(context,"静态广播",Toast.LENGTH_SHORT).show();
 9         }
10     }
11 }

    2、这是需要在AndroidMainfest中进行注册

 1 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
 2     
 3     <application
 4         android:allowBackup="true"
 5         android:icon="@mipmap/ic_launcher"
 6         android:label="@string/app_name"
 7         android:roundIcon="@mipmap/ic_launcher_round"
 8         android:supportsRtl="true"
 9         android:theme="@style/AppTheme">
10         <activity android:name=".MainActivity">
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13 
14                 <category android:name="android.intent.category.LAUNCHER" />
15             </intent-filter>
16         </activity>
17         <receiver android:name=".MsgService">
18             <intent-filter>
19                 <action android:name="android.intent.action.BOOT_COMPleTED"></action>
20             </intent-filter>
21         </receiver>
22     </application>

    注册的代码是在17行到20行,别忘了还要写上权限,权限就是第一个行的权限

    3、如何使用广播

 1 public class MainActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7         init();
 8     }
 9 
10     private void init() {
11         findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
12             @Override
13             public void onClick(View v) {
14                 //这里的意图必须使用和其他一样的意图android.intent.action.BOOT_COMPleTED 如果使用的不一样,将会出现错误
15                 sendBroadcast(new Intent("android.intent.action.BOOT_COMPleTED"));
16             }
17         });
18     }
19 }

 

 

      

  

  

以上是关于Android广播(BroacastReceiver)与服务(Service)的主要内容,如果未能解决你的问题,请参考以下文章

Android启动广播时怎样往广播中传递参数

android 之广播机制

Android高效安全的本地广播LocalBroadcast完全解析

android app中的服务为啥接收不到广播

Android广播阻塞、延迟问题

android 广播接收不到