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)的主要内容,如果未能解决你的问题,请参考以下文章