对于Application、 Activity、 Notification、 BroadCast、 Service 这些组件的使用,对象的实例化问题各有不同,如何实例化以及在什么时候实例化也所有不同。

一、如何实例化

【应用程序】Application:回调OnCreate()方法实例化

【活动】Activity:回调【生命周期】实例化

【通知】Notification:需要实例化【关键字new】

【广播】BroadCast:【系统自动实例化】在Androidmainfest.xml中注册即可,获取不了广播对象。【手动实例化】new关键字,用java代码程序注册,但是最后必须程序注销

【服务】Service:【系统自动实例化】为开始服务,获取不了服务对象。【手动实例化】在Androidmainfest.xml注册,为绑定服务,可以获取服务对象,通过服务链接对象,链接成功后,可获取服务类的内部类对象,该内部类继承自IBinder,内部类用于获取服务类对象。【代理模式】

二、在什么时候实例化

【应用程序】Application:项目启动的时候实例化结束

【活动】Activity:活动界面出现的时候实例化结束

【通知】Notification:只有手动实例化,通过关键字new,但是该对象不可使用,需要通知服务管理NotificationManager对象notifity()方法发出通知,同时带一个ID

【广播】BroadCast:【手动实例化】new关键字实例化结束,但是该对象不可使用,只有使用registerReceiver()方法注册该广播的时候对象才可使用,而广播只有上下文可才能注册,发送广播可由上下文和PendIntent发送。【自动实例化】项目启动结束实例化,广播对象可使用

【服务】Service: 【手动实例化】项目启动没有实例化,在第一次context.bindService()才实例化,同时实例化的服务对象采用代理模式获取,以后再次调用该方法绑定服务都不会再次实例化,而每次绑定服务都只会执行一次onBind()周期,最后一个活动解绑会执行unBind()周期,服务结束。【自动实例化】项目启动没有实例化,在第一次context.startService()才实例化,获取不了该实例化对象,以后再次开启都不会实例化,每次开启服务都不会startCommand()周期。

最新文章

  1. coreseek常见错误原因及解决方法
  2. docker--初体验
  3. strlen()和sizeof()求数组长度
  4. Firefox每次刷新时自动清空缓存的设置方法
  5. Mvc 中ViewBag Model 查找不到解决
  6. 嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)
  7. HealthKit开发教程之HealthKit的复合数据
  8. dll延迟加载
  9. 【JS】Beginner3 & 4 & 5 & 6:Maths & Logic & Conditonal & Looping
  10. C# 语言规范_版本5.0 (第3章 基本概念)
  11. 49. leetcode 94. Binary Tree Inorder Traversal
  12. 【ODPS】TableTunnel单线程简单下载事例
  13. 为什么要使用“var me=this”这样的写法
  14. jsoup 使用总结1--添加header
  15. 手机端两端对齐,兼容ios,安卓
  16. tomcat 发布后中文乱码问题
  17. mips编译器交叉编译openssl
  18. Serializable 介绍
  19. GOF设计模式快速学习
  20. 【转】Spring中事务与aop的先后顺序问题

热门文章

  1. iBatis自动生成工具Abator
  2. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
  3. d3.js--02(data和datum原理)
  4. cin 和 getline 混用中需要注意的问题
  5. 【AC自动机】bzoj4327: JSOI2012 玄武密码
  6. Angular - angularjs2 一些报错的概览(数据为json格式)
  7. Windows10 关闭自动更新
  8. Linux基础学习-crond系统计划任务
  9. python将excel数据写入数据库,或从库中读取出来
  10. Python9-网络编程4-day33