首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android基础_1 四大基本组件介绍与生命周期

当startActivity 方法被调用将触发解析myIntent 的动作,这个机制提供了两个关键好处: A、Activities 能够重复利用从其它组件中Intent 的形式产生的一个请求; B、Activities...这里不能使用子线程来解决 , 因为 BroadcastReceiver 的生命周期很短 , 子线程可能还没有结束BroadcastReceiver 就先结束了 .BroadcastReceiver 一旦结束..., 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程 ( 没有任何活动组件的进程 )....(允许其他应用更新你应用的数据时重写) * @param uri * @param values 更新的数据 * @param selection 条件语句...Activity 处于活动(Active)或运行 (Running)状态 2.Paused——暂停状态      当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast

1.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

Android内存管理(六)Android对Linux系统的内存管理机制进行的优化

而一旦返回,系统就认为该 BroadcastReceiver 不再处于活动状态,因此也就不再需要其托管进程(除非该进程中还有其他组件处于活动状态)。...此问题的解决方案通常是从 BroadcastReceiver 中安排一个 JobService ,以便系统知道在该进程中仍有活动的工作。...考虑一下,还有哪种情况会导致只触发onPause而不触发onStop? 托管通过 Service.startForeground() 启动的前台Service。...另一个前台应用已关联到该应用(不管是通过绑定到其中一个 Service,还是通过使用其中一个内容提供程序)。...例如,如果另一个应用绑定到该应用的 Service,那么该应用处于前台:IME 壁纸 Service 通知侦听器 语音或文本 Service 如果以上条件均不满足,应用将被视为处于后台。

1.6K10

android四大组件

一、 onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。...二、 onStart :该方法的触发表示所属活动将被展现给用户。 三、 onResume :当一个活动和用户发生交互的时候,触发该方法。...五、 onStop :当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。...在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。 六、onRestart :当处于停止状态的活动需要再次展现给用户的时候,触发该方法。...七、 onDestroy :当活动销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。

88810

Android O 广播限制

如果多个应用注册了接收基于系统事件的广播,就会出现,触发广播的系统事件会导致所有应用快速的连续消耗资源,从而降低用户体验。...android.intent.action.TIME_SET”, ACTION_TIMEZONE_CHANGED, ACTION_NEXT_ALARM_CLOCK_CHANGED 当时间、时区或闹钟有变化时,时钟应用会需要接收这些广播更新时钟...有些应用会需要这些定位变化来更新数据。...ACTION_PACKAGE_FULLY_REMOVED 某些应用可能需要在删除另一个软件包后更新其存储的数据; 对于这些应用,没有什么好办法可以注册此广播。...使用JobSchedular检查条件是否会触发隐式广播。 如果在单个进程中使用广播在应用程序组件之间进行通信,请切换为使用LocalBroadcastManager。

3.7K31

Android应用ANR分析

ANR的原因 ANR是因为负责更新UI的主线程无法处理用户输入事件或绘制操作,而导致的糟糕体验。...BroadcastReceiver不能在10秒内结束接收到的任务。 ANR的触发场景 在主线程执行耗时的IO操作。 在主线程执行耗时的计算。...在主线程与其他进程进行同步的binder调用,并且另一个进程需要很长时间才能返回。 主线程因等待其他线程的同步锁( synchronized)而被长时间阻塞。 主线程与另一个线程处于死锁状态。...避免在BroadcastReceiver中执行耗时操作,如保存数据或者注册一个Notification。...不能通过工作线程来执行复杂的任务操作,而应该启动一个 IntentService来响应BroadcastReceiver中的长时间任务。

90940

Android应用ANR分析

ANR的原因 ANR是因为负责更新UI的主线程无法处理用户输入事件或绘制操作,而导致的糟糕体验。...BroadcastReceiver不能在10秒内结束接收到的任务。 ANR的触发场景 在主线程执行耗时的IO操作。 在主线程执行耗时的计算。...在主线程与其他进程进行同步的binder调用,并且另一个进程需要很长时间才能返回。 主线程因等待其他线程的同步锁( synchronized)而被长时间阻塞。 主线程与另一个线程处于死锁状态。...避免在BroadcastReceiver中执行耗时操作,如保存数据或者注册一个Notification。...不能通过工作线程来执行复杂的任务操作,而应该启动一个 IntentService来响应BroadcastReceiver中的长时间任务。

1.1K20

8-26 Android学习ing

1.应用的响应性(Responsive) 在Android中,应用的响应性被活动管理器(Activity Manager)和窗口管理器(Window Manager)这两个系统服务所件事。...当用户触发了输入事件(如键盘输入,点击按钮等),如果应用5秒内没有响应用户的输入事件,那么,Android灰认为该应用无响应,便弹出ANR(Application No Response)对话框 在正常情况下...3.广播接收者的响应性 在Android中,每次广播消息到来时都会创建BroadcastReceiver实例并且执行onReceive()方法,onReceive()方法执行完后,BroadcastReceiver...如果需要完成一项比较耗时的工作,应该通过发送Intent给Service,由Service来完成,这里不能使用子线程来解决,因为BroadcastReceiver的生命周期很短,子线程可能还没有结束BroadcastReceiver...BroadcastReceiver一旦结束,此时BroadcastReceiver所在的进程很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。

46830

Android点将台:传令官(使用级)

个人所有文章整理在此篇,将陆续更新收录:知无涯,行者之路莫言终(我的编程之路) 零、前言 1.本文的知识点 1).BroadcastReceiver`静态`使用 2).BroadcastReceiver...`动态`使用 3).BroadcastReceiver`有序`广播 4).BroadcastReceiver和`系统`行为的结合 5).小例子:使用BroadcastReceiver更新音乐播放器进度条...感觉从上面来看,BroadcastReceiver的onReceive确实耦合性非常低 外部只需要用intent和context.sendBroadcast就能触发它 但似乎BroadcastReceiver...也没有太大的亮点,作用平平 为了说明他的亮点,现在我们新建一个app:Anotherapp 可以发现在另一个app里也能正常使用这个广播 这就有点意思了,我在A项目中写了一个类,它的方法可以在...B项目中触发 这就是静态广播厉害的地方,也是我第一次接触的跨进程通信 (这说明解耦到一定的境界,就天下与我同,然而我将无处不在,手动滑稽) 二、BroadcastReceiver动态使用 BroadcastReceiver

8910

android学习笔记----ANR

什么触发ANR? 通常,如果应用程序无法响应用户输入,系统将显示ANR。例如,如果应用程序阻止UI线程上的某些I / O操作(通常是网络访问),则系统无法处理传入的用户输入事件。...特别是,活动应该尽可能少地建立关键的生命周期方法,如onCreate() 和 onResume()。...如果您没有这种方式将线程设置为较低的优先级,那么线程仍然会使您的应用程序变慢,因为默认情况下它的操作优先级与UI线程相同。...这种方式设计应用程序将允许应用程序的UI线程保持对输入的响应,从而避免由5秒输入事件超时引起的ANR对话框。...另一个共同的问题是BroadcastReceiver对象执行过频繁时发生。频繁的后台执行可以减少其他应用程序可用的内存量。

52100

Android应用界面开发——BroadcastReceiver(实现基于Service的音乐播放器)

实例,并自动触发它的onReceiver()方法,如果onReceiver()方法不能在10秒内完成,Android就会认为该程序无响应(所以onReceiver()方法中不能进行耗时操作)。...对于有序广播,它会按优先级依次触发每个BroadcastReceiver的onReceiver()方法。...abortBroadcast()用于取消广播,如果这条代码生效,那么优先级比MyReceiver低的BroadcastReceiver都将不会被触发。...基于Service的音乐播放器 ---- 这里开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面...Activity所发出的广播,并根据广播的消息内容改变Service的播放状态,当播放状态改变时,该Service对外发送一条广播,广播消息将会被前台Activity接收,前台Activity将会根据广播消息更新界面

1.6K20

17 个必须掌握的 BroadcastReceiver 知识点「建议收藏」

前言 距离上次更新过去一周多了,打破了之前两到三天一更的惯例,主要还是要研究的东西太杂了 本篇文章将对 BroadcastReceiver 开发中,可能用到的知识点,可能遇到的问题进行总结。...文章目录 ---- 方便大家学习,我在 GitHub 上建立个 仓库 ---- 仓库内容与博客同步更新。由于我在 稀土掘金 简书 CSDN 博客园 等站点,都有新内容发布。...Override protected void onDestroy() { unregisterReceiver(mReceiver); super.onDestroy(); } 1.5.3 在另一个...myBroadcast.action.call"); sendBroadcast(intent); } 运行两个 app 之后: 静态注册的方法: 另一 app 直接发广播就收到了 动态注册的方法: 自己的 app 先代码注册,然后另一个...也对该消息“感兴趣”,BroadcastReceiver 的 onReceive ( Context context, Intetn intent ) 方法将会被触发

1.5K31

《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法

课程的教学培养目标如下: 1.培养学生综合运用多门课程知识解决工程领域问题的能力,能够理解各种移动通信方法,完成移动定位算法的设计。...下面接收“网络状态变化”广播为例,说明如何动态注册广播。...如果想截断广播,可以在onReceive 函数中调用abortBroadcast 函数,阻止消息继续传播。...如果子线程要对界面进行更新,比如提示执行进度,则必须通过主线程来更新界面。Handler运行在主线程(UI线程)中,它与子线程通过Message对象来传递消息。...bindService的第一个参数是 Intent 对象,第二个参数是ServiceConnection 对象,第三个参数是一个标志位,比如BIND_AUTO_CREATE 表示服务会在绑定后自动创建,这样就会触发调用音乐服务中的

7110

Android四大组件全面解析,夯实基础。

比如有另一个非全屏或者透明的Activity是Resumed状态,没有完全遮盖这个Activity。...如果在一个进程中(比如Activity)要调用另一个进程中(比如Serveice)对象的操作,就可以使用AIDL生成可序列化的参数。 关于AIDL 及 IPC本篇不会过多涉及。...而不是使用子线程的方法来解决,因为 BroadcastReceiver 的生命周期很短(在 onReceive() 执行后 BroadcastReceiver 的实例就会被销毁),子线程可能还没有结束BroadcastReceiver...如果 BroadcastReceiver 结束了,它的宿主进程还在运行,那么子线程还会继续执行。但宿主进程此时很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。...,使用URI参数来确定更新那一张表中的数据,新数据保存在values参数中,selection和selectionArgs参数用于约束更新那些行,受影响的的行数将做为返回值返回。

83230

速读原著-Android应用开发入门教程(Android应用程序的概念性描述)

5.1.1.应用程序的组成部分 一般情况下,Android 应用程序由以下 4 种组件构成: 活动(Activity); 广播接收器(BroadcastReceiver); 服务(Service); 内容提供者...(2)广播接收器(BroadcastReceiver) 广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、数据网络可用通知或者到了晚上时进行通知。...进程正在屏幕的最前端运行一个与用户交互的 Activity(它的 onResume()方法被调用); 进程有一个正在运行的BroadcastReceiver(它的 BroadcastReceiver.onReceive...系统中通常有很多这样的进程在运行,因此要将这些进程保存在 LRU 列表中,确保当内存不足时用户最近看到的进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。...活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动

97410

【Android从零单排系列三十八】《Android四大组件——BroadcastReceiver

前言 小伙伴们,在上文中我们介绍了Android组件Service,本文我们继续盘点介绍Android开发中另一个非常重要的组件BroadcastReceiver。...一 BroadcastReceiver基本介绍 BroadcastReceiver(广播接收器)是Android中的一个组件,用于接收和响应系统或应用发送的广播消息。...BroadcastReceiver通过注册到系统中指定的广播过滤器来接收广播消息。...二 BroadcastReceiver使用方法 BroadcastReceiver的使用方法如下: 创建一个自定义的BroadcastReceiver类,继承自android.content.BroadcastReceiver...BroadcastRecevier可以在接收到广播后执行一些操作,如启动服务、显示通知、更新UI等。 可以使用abortBroadcast()方法终止广播阻止其传递给其他接收者。

25610

Android 教程

Jelly Bean 是一个在功能和性能方面的渐进的更新,主要目的是改进用户界面, Android 源代码是根据自由和开放源码软件许可证。...应用框架 应用框架层 Java 类的形式为应用程序提供许多高级的服务。应用程序开发者被允许在应用中使用这些服务。 活动管理者 - 控制应用程序生命周期和活动栈的所有方面。...Activities 一个活动标识一个具有用户界面的单一屏幕。举个例子,一个邮件应用程序可以包含一个活动用于显示新邮件列表,另一个活动用来编写邮件,再一个活动来阅读邮件。...广播接收器是BroadcastReceiver类的一个子类,每个消息Intent对象的形式来广播。...public class MyReceiver extends BroadcastReceiver { } Content Providers 内容提供者组件通过请求从一个应用程序到另一个应用程序提供数据

87520
领券