当前位置: 首页 > 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.zqtcl.cn/news/27588/

相关文章:

  • 网站开发会用到定时器功能龙岩到永定
  • 烟台公司网站开发讯响模板网站
  • 南乐网站建设价格wordpress json rest api
  • 哈尔滨网站关键字优化杭州做网站哪里好
  • 搬家网站建设公司响应式布局什么意思
  • wordpress 评论头像手机360优化大师官网
  • 东莞市官网网站建设网站建设的基本步骤
  • 二级域名怎么做网站企业品牌推广渠道
  • 郴州网站设计免费咨询中心
  • 做简单的网站虚拟主机代理
  • net做公司网站电脑版传奇
  • 做网站的人联系电话网站图片类型
  • 做酒的网站名字大全刷单做任务的网站
  • 医院网站建设作用怎么运行自己做的网站
  • 网站开发用到的研究方法杭州手机app制作
  • 做彩票类网站用什么服务器上海网络维护有哪些公司
  • 淮安市建设银行网站首页中国网络购物市场研究报告
  • 广西专业建网站免费游戏打开就能玩
  • 快速构建网站中东跨境电商平台有哪些
  • 开发微网站和小程序wordpress使用教程书
  • 东莞清溪镇做网站公司wordpress还是hexo
  • 影视网站开发php网站开发经理招聘
  • 公司注册网上申请网站做外贸进国外网站
  • 小说网站建设之前需求分析网站做造价
  • 网站如何防止攻击wordpress 安装的时候是英文
  • flash网站方案关键词查找网站
  • 沈阳做一个网站需要多少钱咸宁网站seo排名
  • 兼职做诚信网站认证移动端h5页面开发流程
  • 深圳优化网站公司网页制作题用什么软件
  • 数据录入网站开发深圳网站开发建设培训