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

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

举个常见的例子, BroadcastReceiver 在其 onReceive() 方法中接收到Intent时启动一个线程,然后该函数返回。...而一旦返回,系统就认为该 BroadcastReceiver 不再处于活动状态,因此也就不再需要其托管进程(除非该进程中还有其他组件处于活动状态)。...此问题的解决方案通常是 BroadcastReceiver 中安排一个 JobService ,以便系统知道在该进程中仍有活动的工作。...这有助于避免一些长时间运行的Service由于内存泄漏其他问题而消耗过多的RAM,进而导致系统无法有效使用缓存进程的情况。...所以说没有带后台服务的应用是不耗电也不占用CPU时间的,没必要关闭,这种设计本身就是Android的优势之一,可以让应用下次启动时更快。

1.6K10

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

5.1.1.应用程序的组成部分 一般情况下,Android 应用程序由以下 4 种组件构成: 活动(Activity); 广播接收器(BroadcastReceiver); 服务(Service); 内容提供者...(3)服务(Service)进程 有一个已经用 startService() 方法启动的 Service,虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如:后台 MP3 回放后台网络数据的上传...(5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度。...活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动的...活动完全退出的情景:当使用回退(Back)按钮退出活动时,onDestroy()方法将被调用,活动关闭

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

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

, 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程 ( 没有任何活动组件的进程 )....整个的任务(即activity 栈)可以移到前台,退至后台。举个例子说,比如当前任务在栈中存有四个activity──三个在当前activity 之下。...当用户按下HOME 键的时候,回到了应用程序加载器,然后选择了一个新的应用程序(也就是一个新任务)。则当前任务遁入后台,而新任务的根activity 显示出来。...不管是使用者开发者, 都无法确定的应用程序何时会被回收。所以为了很好的防止数据丢失和其他问题,了解生命周期很重要。 2.2 Activity 生命周期: ?...只是对用户不可见,当其他地方需要内存时它往往被系统杀掉 4.Dead——非活动状态       Activity 尚未被启动、已经被手动终止,已经被系统回收时处于非活动的状态,要手动终止Activity

1.3K30

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

广播接收器BootCompleteReceiverBroadcastReceiver类继承。重写BroadcastReceiver类的回调函数onReceive()。...接收器可以截断消息,不传递,这样后面的接收器就无法获得广播消息。 广播是一种可以跨进程的通信方式。应用程序的发送广播消息,其他应用程序也可以收到。广播的消息由Intent来传递。...(3) Handler和AsyncTask****工作流程 Handler 在主活动MainActivity中,首先启动一个子线程来完成一些耗时的运算I/O处理,比如执行大数据运算、下载多个图片文件、...当播放器关闭后,后台服务就不再播放音乐。 Service是实现程序后台运行的解决方案,适合于执行不需要和用户交互且长期运行的任务。...(2) PendingIntent 与Intent 采用Intent无法实现通过点击通知来打开活动界面,因为使用Intent时系统会马上执行“意图”,并启动活动界面(执行action)。

6610

android学习笔记----ANR

例如,如果应用程序阻止UI线程上的某些I / O操作(通常是网络访问),则系统无法处理传入的用户输入事件。或许应用程序花费太多时间构建精心设计的内存结构计算UI线程中游戏中的下一步行动。...当Android检测到以下某种情况时,它将显示特定应用程序的ANR对话框: 在5秒内无响应输入事件(如按键屏幕触摸事件)。 一个 BroadcastReceiver 尚未在10秒内完成执行。...BroadcastReceiver 执行时间的具体约束强调广播接收器的意图:在后台进行小的,离散的工作量,例如保存设置注册 Notification。...另一个共同的问题是BroadcastReceiver对象执行过频繁时发生。频繁的后台执行可以减少其他应用程序可用的内存量。...如果您的应用程序具有耗时的初始设置阶段,请考虑尽快显示启动画面渲染主视图,指示正在加载并异步填充信息。在任何一种情况下,您都应该以某种方式表明正在取得进展,以免用户认为应用程序被冻结。

51600

Flutter 后台任务

在 Android 中,我们可以在应用程序实际关闭时运行一些后台任务!...首先定义一个 BootComplete 广播接收器,当手机启动后立即执行,然后使用 WorkManager AlarmManager 调度后台任务,使用 Service 在后台执行代码。...负责注册和管理后台任务(Worker,Alarm,Service,BroadcastReceiver 等)的逻辑是用原生代码编写的,例如 Kotlin Swift。...Dart VM 启动不仅可以 main 入口启动,也可以是其他入口,比如后台 isolate 的全局函数 关键在于应用程序后台唤醒时,在本机端持有可用的该入口点(全局函数)引用标识符 — callbackRawHandle...为简单起见,我选择了一个 BootComplete BroadcastReceiver,在手机重新启动启动 Dart VM,但取决于您的应用程序要求,您可以决定何时启动 Dart VM 的正确时机:

3K30

Android程序员问答题

Android四大组件有Activity活动,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。...Activity类是应用程序整个生命周期的重要组成部分,活动的发起和组装是平台应用程序模型的基本组成部分。...生命周期:在整个的生命周期,onCreate(Bundle)开始到onDestroy()结束。onStart()开始到onStop()结束。onResume()开始到onPause(()结束。...8.Activity启动模式 standard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种模式。标准启动一个新的activity压入栈中。...singleTop是在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它。 singleTask是如果每次启动时系统首先会在返回栈中检查是否存在该活动的实例。

64020

Service 开机接受广播,启动服务的问题

概述 Android 4.0 (其实在3.1的版本中Google已经给出了说明)无法接收开机广播的问题本身是因为,如果应用程序安装上始终没有被打开过,那么在Android启动时,该应用无法接收到开机时的系统广播...对应翻译 启动停止程序控制 Android 3.1开始,系统的软件包管理器跟踪处于停止状态(stopped state)的应用程序,控制其启动后台进程和其他应用程序提供了一种手段。...它这样做是为了防止广播无意中的不必要地开展组件的stoppped应用程序后台服务。...后台服务应用程序可以通过向广播Intent添加FLAG_INCLUDE_STOPPED_PACKAGES标志来唤醒处于停止状态(stopped state)的应用程序。...---- Code 在BroadcastReceiver中,启动service和显示一个对话框主题的Activity提示服务启动成功。 真机验证,OK。

81730

android四大组件

( Activity )都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。   ...四、 onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。...一旦一个Activity退出关闭了,它将变为待用状态。   待用: 在一个Activity被杀死后和被装在前,它是待用状态的。...用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。   ...该Service的调用者再启动起来后可以通过stopService关闭Service。

87610

面向初学者的 Android 应用开发基础知识

四个主要的应用程序组件是: 活动 服务 广播接收器: 内容提供商: 活动:它处理 UI 和用户与屏幕的交互。换句话说,它是一个包含活动的用户界面。这些可以是一个多个,具体取决于应用程序。...它在应用程序启动启动。至少有一个活动始终存在,称为 MainActivity。该活动通过以下方式实施。...例如,当手机的电池电量不足时,Android 操作系统会触发广播消息以启动省电功能应用程序,在收到消息后,应用程序会采取适当的措施。...Java 文件夹: JAVA文件夹包含执行应用程序后台任务所需的 java 文件。它由按钮、计算、存储、变量、toast(小弹出消息)、编程功能等功能组成。这些文件的数量取决于创建的活动类型。...5.OnStop:当活动不再可见时调用。 6.OnRestart:当活动停止并重新启动时调用。 7.OnDestroy:当要关闭销毁活动时调用它。

1K20

Android O 广播限制

这些状态通常是由于广播引起的:某些广播广播的发送相对频繁,许多应用程序正在通过清单进行监听(因此需要启动以接收它),但是没有足够的RAM来保留所有状态这些应用程序的进程在缓存中进行处理,因此,每次发送广播时...应用无法再发送或者接收 ACTION_NEW_PICTURE ACTION_NEW_VIDEO 广播了。这项优化影响所有的App,不只是针对Android 7.0。...Android O进一步的限制 在Android 8.0 更高版本的应用无法继续在其AndroidManifest中为隐式广播注册BroadcastReceiver。...ACTION_DEVICE_OWNER_CHANGED 该广播不是经常发送; 一些应用程序需要接收它,以便他们知道设备的安全状态更改。...)作为启动初始化的一部分(随着可用卷被挂载)而发送的,因此它们并不常见,通常在用户的控制之下 。

3.7K31

Android的广播

虽然 广播的发送和接受都是通过intent类,但是广播intent完全和 启动activity的intent不同。 BroadcastReceiver无法看到启动activity的intent的。...同样的,当你发送一个Broadcast Intent 是不会去发现启动一个activity的。 两者是完全不同的。...启动activity的intent是属于前台用户可以看到的操作,而 Broadcat Intent是后台操作 。通常用户是看不到 的。...注册分为两种 动态和静态;如果发送的广播附带有权限 ,那接受者必须有相应的权限才能接受到 在BroadcastReceiver中一般是用来启动 某个activity或者启动某个服务,不允许执行耗时操作...就是注册了,如果有广播就能接受 但是规定有部分广播 静态注册无法接受 例如屏幕的关闭和点亮广播。

1K120

安卓软件开发_应用程序UI组件意外停止

应用程序中的任何代码需要执行时,Android将启动进程;当它不在需要和系统资源被其他应用程序请求时,Android将关闭进程。...你的应用程序不用并入其他应用程序的代码链接到它。相反,当需求产生时它只是启动其他应用程序块。...一个文本短信应用程序可能有一个活动,显示联系人的名单发送信息;第二个活动,写信息给选定的联系人;其他活动,重新查看旧信息更改设置。...一个应用程序可能只包含一个活动,或者像刚才提到的短信应用,它可能包含几个活动。这些活动是什么,以及有多少,当然这取决于它的应用和设计。一般来讲,当应用程序启动时,被标记为第一个的活动应该展示给用户。...为了保持音乐继续播放,媒体播放器活动可以启动一个服务运行在后台。系统将保持音乐播放服务运行,甚至媒体播放器离开屏幕时。 可以连接到(绑定到)一个持续运行的服务(并启动服务,如果它尚未运行)。

1K10

Android实现进程保活方案解析

Android 6.0 引入了待机模式(doze),一旦用户拔下设备的电源插头,并在屏幕关闭后的一段时间内使其保持不活动状态,设备会进入低电耗模式,在该模式下设备会尝试让系统保持休眠状态。...Android 8.0 进一步加强了应用后台执行限制:一旦应用进入缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。...另外,系统会限制未在前台运行的应用的某些行为,比如说应用的后台服务的访问受到限制,也无法使用 Mainifest 注册大部分隐式广播。...Android 9.0 进一步改进了省电模式的功能并加入了应用待机分组,长时间不用的 App 会被打入冷宫;另外,系统监测到应用消耗过多资源时,系统会通知并询问用户是否需要限制该应用的后台活动。...= null) { Logger.d(TAG, "关闭后台播放音乐"); mMediaPlayer.stop(); } }

8.6K30

app自动化面试题

一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。 2 Activity生命周期?...周期即活动开始到结束所经历的各种状态。生命周期即活动开始到结束所经历的各个状态。从一个状态到另一个状态的转变,从无到有再到无,这样一个过程中所经历的状态就叫做生命周期。...一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的Activity。...然而,它们可以启动一个activityservice 来响应它们收到的信息,或者用NotificationManager来通知用户。...2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。 3、IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。

1.4K20

【Android 应用开发】Android之Bluetooth编程

Android中通过静态注册的屏幕开启和屏幕关闭BroadCastReceiver为什么捕捉不到广播?...android开发中使用AndroidManiFest.xml静态注册的BroadCastReceiver没有作用是什么原因?...2.有让我们在service后台监听 这也是提供了一个解决问题,强调和service共存亡,不会一直在后台无限情运行。 总之应该是为了保证系统的稳定和安全才采取这样的措施。 希望对你有帮助。...bluetoothAdapter.getRemoteDevice(macAddress); 将蓝牙设备对象传入服务中的connect方法中; 将设备连接放在线程中完成 , 创建一个设备连接的线程 , 启动这个线程...BluetoothAdapter资料 :  关于权限资料  android.permission.BLUETOOTH 允许程序连接到配对的蓝牙设备(Allows applications to connect

43430

Broadcasts详解「建议收藏」

广播在某个特定事件发生时被发送,例如,当各种系统事件发生时(如系统启动设备开始充电),Android系统就会发送广播。...应用程序也可以发送自定义广播,例如,通知其他应用程序他们关注的事件(如数据下载完成)。 应用程序可以注册广播接收器。当广播被发送时,系统自动将广播传递到注册接收该广播的应用程序。...然后,广播接收器就成为应用程序的一个单独的入口点,即如果应用程序当前没有运行,系统可以通过广播启动应用程序。系统将创建一个新的BroadcastReceiver组件对象来处理每个接收到的广播。...然而,一旦你的代码onReceive()返回,BroadcastReceiver就不再active。...因此,您不应该在BroadcastReceiver启动长时间运行的后台线程。onReceive()执行完后,系统可能杀死进程以随时回收内存,并终止运行在这个进程中的线程。

75210

【Android】Broadcasts详解

比如,用于表示飞行模式的intent包含一个附加的布尔字段来表示飞行模式的状态是开启还是关闭。...系统广播的变化 Android 7.0更高版本不再发送下列系统广播,这项优化会影响所有的应用程序,而不只是那些针对Android 7.0开发的程序。...之后这个广播接收器就变成了你的应用程序中一个独立的入口,这就意味着如果你的应用程序不在运行,系统可以启动你的程序并传递广播。...鉴于这个原因,你不应该在一个广播接收器中启动一个长时间在后台运行的线程。当onReceive()返回后,系统可能会杀掉进程来回收内存,这会结束所有运行在这个进程中的线程。...广播接收器无法捕捉到用来启动Activity的intent;同样地,当你广播一个intent,你也无法启动一个Activity。

74520

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

(2) 可见但非前台Activity——比如Activity中弹出了一个对话框,导致Activity可见但是位于后台无法和用户交互。...这个也很好理解,当跳转的另外一个界面,之前的界面还在后台,按回退按钮还会恢复原来的状态,大部分软件在打开的时候,直接按Home键,并不会关闭它,此时的Activity就是Stopped状态。...标准模式 活动的默认启动模式,简单来说,在你不指定启动模式的情况下,你每打开一个新的Activity,新的Activity都会加入你的返回栈并且处于栈顶状态。这样当你点返回的时候就是一层一层退栈。...(当然这里指的是少数播放器,并不是所有播放类软件都会带) 2.2 后台服务: 默认的服务即为后台服务,即不会在通知栏显示 常存的 Notification 服务被终止时用户无法察觉,如天气的更新...3 按使用方式分类 3.1 startService启动的服务 主要用于启动一个服务执行后台任务,不进行通信。

82630
领券