返回顶部
首页 > 资讯 > 后端开发 > Python >BroadcastReceiver的思考
  • 646
分享到

BroadcastReceiver的思考

BroadcastReceiver 2023-01-31 05:01:59 646人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

上一篇文章中,傻蛋提到了BroadcastReceiver是Android中最轻薄、最短小的组件,它的对象生命周期十分短暂,经过傻蛋测试在BroadcastReceiver中让线程睡眠10秒(Activity是5秒钟)的话,Android就

上一篇文章中,傻蛋提到了BroadcastReceiver是Android中最轻薄、最短小的组件,它的对象生命周期十分短暂,经过傻蛋测试在BroadcastReceiver中让线程睡眠10秒(Activity是5秒钟)的话,Android就会弹出错误(和Activity超时的错误相同),同时需要注意的是Activity、Service和BroadcastReceiver都是运行在本进程的主线程里面的。通过这个测试让傻蛋进一步产生了疑问,如果在Service中处理一个长时间的任务会怎么样?

 

启动一个Service,然后在Service的onCreate()方法中添加如下代码:

  1. try {  
  2.    
  3.           Log.v(TAG , "sleep start …..");  
  4.    
  5.          Thread.sleep(20000);  
  6.    
  7.          Log.v(TAG,"sleep end …..");  
  8.    
  9. } catch (InterruptedException e) {  
  10.    
  11.    
  12.    
  13.          / / TODO Auto-generated catch block  
  14.    
  15.          e.printStackTrace();  
  16.    

单就是让Service睡眠20秒钟,我们会发现,sleep start…. 和 sleep end….这两个日志打印出来了,但是后台还会出现如下错误,前台弹出no response超时对话框。

 

当傻蛋在onCreate()中新启动一个线程来,睡眠时,程序正常。

所以总结一下:无论是 Activity、BroadcastReceiver还是Service,只要是有长时间处理的任务,就需要重新开一个线程来处理,为什么会这样?因为他们都是运行在主线程中的。

在使用BroadcastReceiver时还有一个我们需要注意的:在BroadcastReceiver的onReceive(Context context , Intent intent )这第一个context到底是哪一个context?是Activity还是Application?通过傻蛋测试发现:
如果你的BroadcastReceiver是通过在Activity中的this.reGISterReceiver(myBroadcaster, filter); 来注册的话,那么这个context就是这个Activity,而如果是通过AndroidManifest来注册的话,那么这个context就是:android.app.ReceiverRestrictedContext。

 

--结束END--

本文标题: BroadcastReceiver的思考

本文链接: https://lsjlt.com/news/189190.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • BroadcastReceiver的思考
    上一篇文章中,傻蛋提到了BroadcastReceiver是Android中最轻薄、最短小的组件,它的对象生命周期十分短暂,经过傻蛋测试在BroadcastReceiver中让线程睡眠10秒(Activity是5秒钟)的话,Android就...
    99+
    2023-01-31
    BroadcastReceiver
  • Android Service的思考(3
    前两篇文章中可以看到Activity和Service,context.startService对应着Service中的onStart()方法,context.onBindService对应的是Service中的onBind()方法。当我们继...
    99+
    2023-01-31
    Android Service
  • HTML 思维:思考和构建 Web 的方式
    ...
    99+
    2024-04-02
  • redis实践及思考
    导语:当面临存储选型时是选择关系型还是非关系型数据库? 如果选择了非关系型的redis,redis常用数据类型占用内存大小如何估算的? redis的性能瓶颈又在哪里? 背景 前段时间接手了...
    99+
    2024-04-02
  • 战略思考3+1
        之所以说“战略思考”(Strategic Thinking)而不是说“战略思维”,是不想把题目搞得太大,最后弄得自己都不好收拾。     以老刘的愚见,战略思考和非战略思考的区别在于“度”,基本上,这个“度”包括三个维度...
    99+
    2023-01-31
    战略
  • 关于Android MVP模式的思考
      这一周对现有的Android项目进行了框架重构,使用MVP模式来重新构建整个项目和包结构。来总结一下我在这个过程中理解和实践吧。   MVP概述   MVP是指Mo...
    99+
    2022-06-06
    mvp模式 Android
  • 对python并发编程的思考
    为了提高系统密集型运算的效率,我们常常会使用到多个进程或者是多个线程,python中的Threading包实现了线程,multiprocessing 包则实现了多进程。而在3.2版本的python中,将进程与线程进一步封装成concurr...
    99+
    2023-01-31
    python
  • 关于Java栈与堆的思考
    关于Java栈与堆的思考[@more@]  1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。   2. 栈的优势是,存取速度比堆要快,仅次于直...
    99+
    2023-06-03
  • 大数据量删除的思考 - 1
        在最近一篇关于从表中删除列的文章里,我留下了一个悬而未决的问题,删除列之后你应该/可能会做什么?因为删除列只不过是“大量删除”的特殊情况。在这篇文章中,我计...
    99+
    2024-04-02
  • 大数据量删除的思考(二)
    在这个简短系列的第1部分中,我提供了两个场景的非正式描述,在这些场景中,我们可以从表中进行大规模删除。没有一个具体的例子,很难想象删除数据的性质和可用的访问路径会产生大数据量删除操作对系统的性能影响...
    99+
    2024-04-02
  • 大数据量删除的思考(四)
    在本系列的前一期文章中,我制作了一些图,突出显示了按表扫描执行大量删除操作和按索 引范围扫描执行大量删除之间的主要区别。 根据所涉及的数据模式,选择正确的策略可能对随机I/Os 的数量、生成的undo的数...
    99+
    2024-04-02
  • 大数据量删除的思考 - 2
        在这个简短系列的第1部分中,我提供了两个场景的非正式描述,在这些场景中,我们可以从表中进行大规模删除。没有一个具体的例子,很难想象删除数据的性质和可用的访问...
    99+
    2024-04-02
  • linux内核copy_{to, from}_user()的思考
    目录一、什么是copy_{to,from}_user()1、copy_{to,from}_user()对比memcpy()2、函数定义二、CONFIG_ARM64_SW_TTBR0_...
    99+
    2024-04-02
  • 关于Python课程的一些思考。
    出于对网络爬虫的好奇,我选修了Python程序设计,至于pyhton还能干啥还不太清除,只觉得爬一些数据很有意思,所以希望老师讲一些数据分析之类的技术。学完课程希望能分析一些数据,比如:还有: 上课的话希望快速讲完基础知识(语法什么的),...
    99+
    2023-01-30
    课程 Python
  • 对HashMap的思考及手写实现
    作者:张丰哲原文:https://www.jianshu.com/p/b638f19aeb64HashMap是Java中常用的集合,而且HashMap的一些思想,对于我们平时解决业务上的一些问题,在思路上有帮助,基于此,本篇博客将分析Has...
    99+
    2023-06-02
  • MySQL高可用方案的一些思考
    我在去年QCon和Gdevops广州站的时候,讲到MySQL和Oracle的现状和发展时,简单总结了下一个常见的使用误区:把MySQL当Oracle用,或者把Oracle当做MySQL用。...
    99+
    2024-04-02
  • Scala编程的思考方法是什么
    这篇文章主要讲解了“Scala编程的思考方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala编程的思考方法是什么”吧!在进行什么编程的时候,你用什么方法来思考呢?用命令是方法来...
    99+
    2023-06-17
  • 关于Diablo3的历史和现状思考
    大菠萝3已经通了,用巫医基本没难度,玩游戏的过程中引发了一些思考,结合整个游戏的历史背景设定,总觉得不写出来就缺点什么。我是暴雪的忠实粉丝,暴雪每款游戏我都玩了,包括早期Dos下的失落的维京人。简单介绍一下,Diablo是暴雪的一个ARPG...
    99+
    2023-01-31
    现状 历史
  • 注册时的BroadcastReceiver的onReceive触发
    当我们注册一个BroadcastReceiver时,该接收器将会接收并处理与其过滤器匹配的所有广播消息。当接收到广播消息时,系统会自...
    99+
    2023-09-26
    onReceive
  • MYSQL中binlog优化的一些思考汇总
    问题 问题1:如何解决事务提交时flush redo log带来的性能损失 WAL是实现事务持久性(D)的一个常用技术,基本原理是将事务的修改记录redo log。redo log顺序追加写入。事务提交时,只需要保证...
    99+
    2022-05-30
    mysqlbinlog命令 mysql binlog查看 mysqlbinlog命令详解
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作