Android四大组件-活动、服务、广播、碎片

情况一

应用场景:定时从服务器获取数据,然后活动或者碎片中根据最新获得的数据,更新UI。

思考: 首先定时,想到定时器,推荐使用系统自带的AlertManager,而它需要启动一个pendingIntent,所以想到将它放在一个服务中,然后定时启动服务,其次,要从服务器获取数据,不可以在主线程中进行,所以需要异步加载,想到AsynTask,再接着考虑,活动或者碎片要根据最新的数据进行UI更新,那么如何进行更新呐?这里想到广播,前边通过定时器固定时间启动服务,那么在启动服务的时候,我们可以发送一条广播,推荐本地广播,然后新建一个类,对广播进行监听,当并且这个类需要实现一个接口,当监听到广播时,调用这个方法,最后在活动或者碎片中,启动服务,绑定广播,并实现前边接口的方法。

总结:Service、BroadcastReceiver、AlertManager、IListener

完善:运行后会出现俩个问题,一个是因为AlertManager是属于系统的,所以会出现,当我们解除广播绑定,并停止服务后,在固定的时间内,AlertManager再次启动服务,为了解决这个问题,可以新建一个单例类,Alert用于管理AlertManager需要的pendingIntent实例和AlertManager实例,然后在停止服务的地方,掉用AlertManager的cancel方法停止定时任务。

转载于:https://www.cnblogs.com/DaiLeGeMeng/p/7429353.html

android踩坑日记1相关推荐

  1. Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

    RecyclerView中EditText和ImageView的ViewHolder复用坑 RecyclerView作为ListView的升级版,目前来讲讲开发过程遇到的坑. RecyclerView ...

  2. Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化

    1,fresco是一个强大的图片加载库 2,fresco设计了一个叫做image pipeline(图片管道)的模块,它负责从从网络,从本地文件系统,从本地资源加载图片,为了最大限度节约资源和cpu时 ...

  3. Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片

    EditText设置监听软键盘删除键(或enter) 一般使用方法 edittext.setOnKeyListener(new View.OnKeyListener(){@Overridepublic ...

  4. Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑

    Okhttp设置User-Agent你可能没遇到的坑 Http Header之User-Agent    User-Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User ...

  5. Android踩坑日记:android7.0动态相机权限

    前提: 项目中使用的动态权限开源库github:https://github.com/yanzhenjie/AndPermission. 转载必须注明本文转自严振杰的博客:http://blog.cs ...

  6. Android踩坑日记:Android动态权限分析和解决方案

    关于运行时权限 在旧的权限管理系统中,权限仅仅在APP安装时询问一次,用户同意了这些权限App才能安装,APP一旦安装后就可以偷偷做很多不为人知的事情. 我们知道从Android6.0开始,App可以 ...

  7. Android踩坑日记:FloatingActionButton的设置大小问题

    FloatingActionButton(FAB) 是 Android 5.0 新特性--Material Design 中的一个控件,是一种悬浮的按钮.FloatingActionButton 是 ...

  8. Android踩坑日记:自定义水平和圆形ProgressBar样式

    自定义水平和圆形ProgressBar样式 1.自定义水平ProgressBar样式 ProgressBar分为两种,我们能明确看到进度,不确定的就是不清楚.不确定一个操作需要多长时间来完成,这个时候 ...

  9. Android踩坑日记:Android字体属性及测量(FontMetrics)

    Android字体属性及测量(FontMetrics) 字体的几个参数,以Android API文档定义为尊,见下图 要点如下: 基准点是baseline Ascent是baseline之上至字符最高 ...

最新文章

  1. ssh,FTP到远程服务器时,显示自定义的警告信息
  2. 随机洗牌算法 银行家算法
  3. JAVA实现查看详情功能_【JavaWeb】111:详情页面的实现
  4. OMG,隔壁老王竟然是个GEEK !
  5. javaweb学习总结(四十四)——监听器(Listener)学习
  6. Java 12常规可用性
  7. mysql 查看表格scott_mysql查询学习第一天,针对scott
  8. iOS 关于UITableView的黑科技
  9. php更改tittle,phpcms V9修改默认title标签
  10. [洛谷P1642]规划
  11. 软件性能测试中常见问题,性能测试常见的问题
  12. 添加内核驱动模块(1)(mydriver.c+ Konfig+Makefile )
  13. 数据库设计员工管理系统
  14. 系统概要设计阶段2019/10/22软件工程
  15. 实验二 matlab矩阵分析与处理
  16. 第3选择-解决所有难题的关键思维,种下好的种子避免落入钻石交易
  17. 数说故事「行业热点快报」连锁餐饮行业企业动态
  18. java中的for循环里面创建对象和for循环外面创建对象之间的区别
  19. 怎么在韩国VPS服务器与虚拟主机中进行选择?
  20. 北京软件开发商城app系统软件开发大概多少钱

热门文章

  1. Mybatis-puls打印sql语句
  2. Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
  3. host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析
  4. 服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容
  5. x86_64 arm制linux-gcc,arm-linux-gcc 制作
  6. jsch mysql_java JDBC 连接MySql
  7. java生成大素数_用BigInteger实现大素数生成算法
  8. HTML5类选择器使用,CSS选择器种类及使用方法
  9. echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...
  10. php语录网站,杨泽业:给你的wordpress博客添加经典语录功能,适合所有php网站