100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【安卓实验】实验五 广播实验

【安卓实验】实验五 广播实验

时间:2023-05-21 18:07:26

相关推荐

【安卓实验】实验五 广播实验

【实验名称】实验五、广播实验

【实验目的】

1、了解使用Intent进行组件通信的原理;

2、了解Intent过滤器的原理和匹配机制;

3、掌握发送和接收广播的方法

【实验内容】

任务1、普通广播;

任务2、系统广播;

任务3、有序广播;

【实验要求】

1、练习使用静态方法和动态方法注册广播接收器

2、练习发送广播消息的方法;

(请完成如下部分)

【实验设计】

静态注册

动态注册

MainActivity.java

package com.example.test04_broadcast;import androidx.appcompat.app.AppCompatActivity;import ponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void staticSys(View view){Intent intent = new Intent(MainActivity.this, StaticReceiver.class);startActivity(intent);}public void actionSys(View view){Intent intent = new Intent(MainActivity.this, ActionReceiver.class);startActivity(intent);}public void orderSys(View view){Intent intent = new Intent(MainActivity.this, OrderReceiver.class);startActivity(intent);}}

ActionReceiver.java

package com.example.test04_broadcast;import android.app.Activity;import ponentName;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import androidx.annotation.Nullable;public class ActionReceiver extends Activity {protected static final String ACTION ="com.eoeAndroid.broadcastReceiver.RECEIVER_ACTION";private MyReceiver myReceiver;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.actionlayout);}public void sendAct(View view){Intent intent=new Intent(); //实例化Intentintent.setAction(ACTION);//设置Intent的action属性intent.putExtra("info","动态方法");sendBroadcast(intent);}public void register(View view){myReceiver = new MyReceiver();IntentFilter filter = new IntentFilter();filter.addAction(ACTION);registerReceiver(myReceiver, filter);}public void unregister(View view){unregisterReceiver(myReceiver);}}

MyOrderReceiverOne.java

package com.example.test04_broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyOrderReceiverOne extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("我收到有序的啦");}}

MyOrderReceiverTwo.java

package com.example.test04_broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyOrderReceiverTwo extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("我收到有序的啦");}}

MyOrderReceiverThree.java

package com.example.test04_broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyOrderReceiverThree extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("我收到有序的啦");}}

MyReceiver.java

package com.example.test04_broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.view.Gravity;import android.widget.Toast;public class MyReceiver extends BroadcastReceiver {public MyReceiver() {}@Overridepublic void onReceive(Context context, Intent intent) {Toast t = Toast.makeText(context,"广播方式:"+intent.getStringExtra("info"), Toast.LENGTH_SHORT);t.setGravity(Gravity.TOP,0,40);t.show();}}

StaticReceiver.java

package com.example.test04_broadcast;import android.app.Activity;import ponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;public class StaticReceiver extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.staticlayout);}public void send(View view){Intent intent = new Intent();//intent.setAction("com.eoeAndroid.broadcastReceiver.RECEIVER_ACTION");intent.putExtra("info","静态方法");intent.setComponent(new ComponentName(getPackageName(),"com.example.test04_broadcast.MyReceiver"));sendBroadcast(intent);}}

actionlayout.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ActionReceiver"><Buttonandroid:id = "@+id/actBroadcast"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "发送Broadcast"android:onClick="sendAct"/><Buttonandroid:id = "@+id/registerReceiver"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "创建"android:onClick="register"/><Buttonandroid:id = "@+id/unregisterReceiver"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "注销"android:onClick="unregister"/></LinearLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id = "@+id/staticButton"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "静态方法"android:onClick="staticSys"/><Buttonandroid:id = "@+id/actionButton"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "动态方法"android:onClick="actionSys"/><Buttonandroid:id = "@+id/orderButton"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "有序广播"android:onClick="orderSys"/></LinearLayout>

orderlayout.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".OrderReceiver"><Buttonandroid:id = "@+id/orderBroadcast"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "发送Broadcast"android:onClick="sendOrd"/></LinearLayout>

staticlayout.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".StaticReceiver"><Buttonandroid:id = "@+id/btnBroadcast"android:layout_width = "match_parent"android:layout_height = "wrap_content"android:text = "发送Broadcast"android:onClick="send"/></LinearLayout>

【实验分析或心得】

静态注册的优点是无论应用程序是否处于运行状态,广播接受者都会对程序进行监听。并在清单文件中完成注册。动态注册是创建一个广播接收者,并在Activity中进行注册,动态注册的广播接收者的生命周期依赖于注册广播的组件。当Activity销毁时,广播接收者也被移除。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。