当前位置: 首页 > news >正文

推广网站加盟wordpress付费主题破解版

推广网站加盟,wordpress付费主题破解版,wordpress用户注册怎么设置,公司网站建设及维护管理总结Android Studio学习笔记——广播机制 5.1 广播机制简介5.2 接收系统广播5.2.1 动态注册监听网络变化5.2.2 静态注册实现开机启动 5.3 发送自定义广播5.3.1 发送标准广播5.3.2 发送有序广播 5.4 使用本地广播5.5 广播的最佳实践——强制下线功能 5.1 广播机制简介 安卓每个应用… Android Studio学习笔记——广播机制 5.1 广播机制简介5.2 接收系统广播5.2.1 动态注册监听网络变化5.2.2 静态注册实现开机启动 5.3 发送自定义广播5.3.1 发送标准广播5.3.2 发送有序广播 5.4 使用本地广播5.5 广播的最佳实践——强制下线功能 5.1 广播机制简介 安卓每个应用程序都可以对自己感兴趣的广播进行注册要该程序就只会接收到自己所关心的广播内容。这些广播可能是来自于系统的也可能是来自于其他应用。安卓提供了一套完整的API允许应用程序自由的发送和接收广播。安卓中的广播主要可以分为两种类型标准广播和有序广播。 标准广播Normal broadcasts是一种完全异步执行的广播在广播发出之后所有的广播接收器几乎都会在同一时刻接收到这条广播信息。他们之间没有任何先后顺序。这种广播效率会比较高。但同时也意味着他是无法被截断的。 有序广播 ordered Broadcasst是一种同步执行广播。在广播发出之后同意时刻只会有一个广播接收器能够接收到这条广播。当这个广播接收器中的逻辑执行完毕后广播才会继续传递所以此时广播接收器是有先后顺序的。优先级高的广播接收器就可以先接收到广播信息。并且前面的广播接收器还可以截断正在传递的广播。这样后面的广播接收器就无法收到广播信息。 5.2 接收系统广播 注册广播的方式有两种。在代码中注册称为动态注册在AndroidManifest.xml中注册成为静态注册。 5.2.1 动态注册监听网络变化 在代码中注册广播动态注册动态注册的广播接收器一定都要取消注册才行通过onDestroy方法中调用unregister方法来实现。 public class MainActivity extends AppCompatActivity {private IntentFilter intentFilter;private NetworkChangeReceiver networkChangeReceiver;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) - {Insets systemBars insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});intentFilter new IntentFilter();intentFilter.addAction(android.net.com.CONNECTIVITY_CHANGE);networkChangeReceiver new NetworkChangeReceiver();registerReceiver(networkChangeReceiver,intentFilter);}Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(networkChangeReceiver);} }public class NetworkChangeReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,network changes,Toast.LENGTH_SHORT).show();} } 5.2.2 静态注册实现开机启动 动态注册的广播可以自由的控制注册与注销在灵活性方面有很大的优势但是它也存在着一个缺点即必须在程序启动之后才能接收到广播因为注册的逻辑是写在OnCreate方法中的。 如果想要在程序未启动的时候就能接受到广播需要使用静态注册的方法。 创建new-Other-BroadcastReceiver弹出创建Broadcast的窗口。创建一个BootCompleteReceiver的广播接收器。 public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {// TODO: This method is called when the BroadcastReceiver is receiving// an Intent broadcast.Toast.makeText(context,Boot Complete,Toast.LENGTH_LONG).show();throw new UnsupportedOperationException(Not yet implemented);} }静态广播注册接收器一定要在AndroidManifest.xml文件中注册才能使用。上一步创建广播接收器在在AndroidManifest.xml中的注册会自动完成。 receiverandroid:name.BootCompleteReceiverandroid:enabledtrueandroid:exportedtrue/receiver在//applicaton标签内多了一个新的标签《receiver》所有的静态广播注册都是在这里注册的。通过android:name来具体指定注册哪一个广播接收器。 目前BootCompleteReceiver还是不能接收到开机广播还需要对AndroidManifest.xml文件进行修改才行。 因为Android系统启动后会发出一条android.intent.action.BOOT_COMPLETED的广播所以在接收器的《intent-filter》中添加相应action。 注意 不要在OnReceive方法中添加过多的逻辑或其他耗时的操作因为在广播接收器中是不允许开启线程的当OnReceive方法运行了较长时间而没有结束程序就会报错。因此广播接收器更多的是扮演一种打开程序其他组件的角色比如创建一条状态栏通知或者启动一个服务等。 5.3 发送自定义广播 5.3.1 发送标准广播 public class MainActivity extends AppCompatActivity {...Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) - {Insets systemBars insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});Button button(Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(com.example.broadcast.MY_BROADCAST);sendBroadcast(intent);}});}}广播是一种跨进程通信的方式。 验证该方式可以新建一个BroadcastTest2项目点击File-》new-》New Project进行创建。 将项目创建好之后还需要在这个项目下定义一个广播接收器用于接收上面的自定义广播。 在BroadcastTest2项目中AnotherBroadcastReceiver同样是接收com.example.broadcasttest.MY_BROADCAST这条广播和BroadcastTest项目中的MyBroadcastReceiver是一样的。 现在运行BroadcastTest2按home键再去BroadcastTest界面点击button按钮发送广播会分别弹出两次提示消息说明BroadcastTest发送的广播不仅自己接收到BroadcastTest2也接收到了。 5.3.2 发送有序广播 5.3.1都是标准广播如果要发送有序广播重新回到BroadcastTest项目修改MainActivity中的代码 public class MainActivity extends AppCompatActivity {...Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) - {Insets systemBars insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});Button button(Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Intent intent new Intent(com.example.broadcast.MY_BROADCAST);sendOrderedBroadcast(intent,null);}});}}发送有序广播只需要改动一行代码这时候广播接受器是有先有顺序的而且前面的广播接收器还可以将广播截断以阻止其继续传播。 在注册广播的时候定义广播接收器的先后顺序修改AndroidManifest.xml中的代码 receiverandroid:name.AnotherBroadcastReceiverandroid:enabledtrueandroid:exportedtrueintent-filter android:priority100action android:namecom.example.broadcasttest.MY_BROADCAST //intent-filter/receiver将MyBroadcastReceiver的优先级设成了100以保证它一定会在AnotherBroadcastReceiver之前收到广播。 MyBroadcastReceiver有优先权就可以选择是否允许广播继续传递。 public class MyBroadcastReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {// TODO: This method is called when the BroadcastReceiver is receiving// an Intent broadcast.abortBroadcast();//throw new UnsupportedOperationException(Not yet implemented);} }abortBroadcast()可以截断广播终止广播的传递。 5.4 使用本地广播 前面发送和接收的广播全部属于全局广播即发出的广播可以被其他任何其他应用程序收到可以接受到来自于其他应用程序的广播。这样很容易引起安全性的问题。如发送一些关键性数据的广播可能被其他应用去截获或者其他应用程序不停的向我们的广播接收器发各种垃圾广播。 为了解决广播的安全性问题安卓引入了一套本地广播机制。使用这个广播只能够在应用程序的内部进行传播。并且广播接收器也只能接受来自本应用程序发出的广播。 本地广播的用法并不复杂主要就是用了一个LocalBroadcastManager来对广播进行管理。并提供了发送广播和注册广播接收器的方法。 public class MainActivity extends AppCompatActivity {private IntentFilter intentFilter;//private NetworkChangeReceiver networkChangeReceiver;private LocalReceiver localReceiver;private LocalBroadcastManager localBroadcastManager;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) - {Insets systemBars insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});//intentFilter new IntentFilter();//intentFilter.addAction(android.net.com.CONNECTIVITY_CHANGE);//networkChangeReceiver new NetworkChangeReceiver();//registerReceiver(networkChangeReceiver,intentFilter);localBroadcastManagerLocalBroadcastManager.getInstance(this);Button button(Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {//Intent intent new Intent(com.example.broadcast.MY_BROADCAST);//sendBroadcast(intent);//sendOrderedBroadcast(intent,null);Intent intent new Intent(com.example.broadcast.LOCAL_BROADCAST);localBroadcastManager.sendBroadcast(intent);}});intentFilter new IntentFilter();intentFilter.addAction(android.net.com.LOCAL_CHANGE);localReceiver new LocalReceiver();localBroadcastManager.registerReceiver(localReceiver,intentFilter);//注册本地广播监听器}Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(networkChangeReceiver);} }public class LocalReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,received local broadcast,Toast.LENGTH_SHORT).show();} } 本地广播是无法通过静态注册的方式来接收的。 5.5 广播的最佳实践——强制下线功能 后续更新git链接
http://www.pierceye.com/news/27588/

相关文章:

  • 做东西的网站有那些wordpress 封禁账号
  • 网站开发培训教程wordpress 去评论
  • 如何确认建设银行网站不是假的越秀区网站建设公司
  • 临沂手机网站开发制作公司自媒体科技资讯wordpress主题
  • 网站app制作平台绍兴企业建站模板
  • 网站服务器放置地怎么填深圳seo云哥
  • 我贷款网站如何做织梦模板国外网站
  • 网站后台怎么管理wordpress 锚
  • 王也踏青seo网络推广技术员招聘
  • 淄博网站文章优化聊天网站建设
  • 网站开发的方式有域名怎么建立网站
  • 网站 成功案例app扁平化设计网站
  • 农林牧渔行业网站建设什么系统做网站最安全
  • 数据库做网站商标怎么设计
  • 爱站关键词挖掘查询工具网站备案是备案域名还是空间
  • 东莞公司建设网站西安官网制作
  • 学做网站要多少钱如何制作微信打卡小程序
  • 帮别人做网站制作做网站需要套模板
  • 深圳网站建设制作设计公司社区文化建设
  • 网站密钥怎么做网站建设有哪些板块
  • 建设银行官方网站app下载百度app登录
  • 新媒体口碑营销案例网页关键词优化
  • 维护网站是什么工作免费logo设计 u钙
  • 网站建站价格标准低内存vps搭建WordPress
  • 网站背景音乐怎么做类似知乎的网站
  • 遵义 网站建设做seo推广网站
  • 广州网站开发设计厦门人才网唯一官网登录
  • 一个女的让我和她做优惠网站网页设计与制作参考文献
  • 建立网站大概需要多长时间南京制作网站培训学校
  • 网站设计制作一条龙免费国内做网站上市公司