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

Android Jetpack - LiveData

DESTROYED 状态时自动移除,尤其是 activities 和 fragments ,它们可以安全地观察 LiveData 而不必担心内存泄露 —— activities 和 fragments 在生命周期销毁时会立即取消数据观察订阅...例如,后台活动在返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...在数据变动时及时通知 Observer,这一步通常在 UI 控制器中完成 注意:你可以使用 observeForever(Observer) 方法注册没有关联 LifecycleOwner 对象的观察者...在这种情况下,观察者被认为始终处于活动状态,因此始终会收到有关修改的通知。...nameObserver) } } nameObserver 作为 observe() 的参数注册之后,一旦 name 发生变动且 MainActivity 处于活跃状态,onChanged() 方法就会被立即调用

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

Android面试题(四大组件篇)

当Activity意外销毁时再重新创建时会调用方法,比如横竖屏切换,会导致重新创建Activity,onSaveInstanceState()方法调用在onStop()之前,用于保存当前Activity...Q:一个Activty先start一个Service后,再bind时会回调什么方法?此时如何做才能回调Service的destory()方法?...可以直接调用到Service中的方法,如果要主动通知Activity,我们可以利用回调方法 Service向Activity发送消息,可以使用广播,当然Activity要注册相应的接收器。...为了防止这种情况发生,您的BroadcastReceiver和Service将需要实现一个单独的唤醒锁定策略,以确保在服务可用之前继续运行电话。 Q:前台服务什么?和普通服务的不同?...如何去开启一个前台服务前台服务即对用户可见的服务,可以以通知的形式创建前台服务 Q:是否了解ActivityManagerService,谈谈它发挥什么作用?

87920

Android实现进程保活方案解析

如果是负数,表示该进程为系统进程,肯定不会被杀掉, 如果是0,表示是前台进程,即当前用户正在操作的进程,除非万不得已,也不会被杀掉; 如果是1,表示是可见进程,通常表示有一个前台服务,会在通知栏有一个划不掉的通知...,比如放歌,下载文件什么的; 再增大,则优先级逐渐降低,顺序为服务进程,缓存进程,空进程等等。...白色保活 用startForeground()启动前台服务,这是官方提供的后台保活方式,不足的就是通知栏会常驻一条通知,像360的状态栏。...,此时会出现两个前台服务,但通知管理器里只有一个关联的通知。...这时我们在其中一个服务调用 stopForeground(true),这个服务前台状态会被取消,同时状态栏通知也被移除。另外一个服务并没有受到影响,还是前台服务状态,但是此时,状态栏通知已经没了!

8.9K30

高效管理 Android 前台服务

为了帮助您更好地创建和管理前台服务,我们特别为总结了以下 3 个操作要点: 适用于所有 API 等级: 应用创建服务时,必须显示级别至少为 PRIORITY_LOW 的常驻通知 (persistent...用户可以点击通知来取消任务,且取消操作可与 action 绑定,例如,当用户停止播放曲目后,回放服务也会一同停止。 通知标题和描述必须准确体现前台服务正在执行的操作。...如果您想了解有关前台服务的更多信息,包括最近几个版本 Android 平台内的相关重要更新,请参阅《在前台运行服务》。...其它方案 不建议您通过前台服务实现被动定位追踪,如果用户已经允许您的应用进行地理位置追踪,请调用 FusedLocationProvider API 获取位置更新,并注意设置合适的获取频率 (切勿太频繁...如果应用需要重新连接至设备,请调用 BluetoothLeScanner 中接受 PendingIntent 参数的 startScan 方法,当过滤条件满足时会被触发。

82670

意见不一致、聚会总告吹?有了这个小程序再不用发愁

好哇,都什么时间有空? 周六晚上加班,周日早上约了人,还不确定诶」,只有晚上有空哦。 这样的讨论一直持续到周五晚上,这时不知道谁插了一句: 要不下次再约吧,等大家空一点的时候。 也行啊,下次吧。...首次打开,点击「创建聚会」或者下方「+」创建活动或聚会。...接下来只需要简单几步就能创建投票:首先输入标题说明聚会意图,选择聚会的候选时间,输入时会自动跳出时间选项,最后点击下方「发起投票」,分分钟搞定聚会投票页面。...在聚会开始前,微信的「服务通知」也会弹出日程提醒,不用担心有粗心鬼错过聚会。 阳光刚好,微风不燥~趁着好天气和三五好友约起来吧。 毕竟不管是爱情、亲情还是友情,都少不了偶尔的团聚和用心的经营。

59540

iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通知的样式向下出现,点击后回到根控制器再进行跳转(注意压栈) 点击通知会打开该通知的app 不管程序打开还是关闭,推送都能如期发出...案例结构,tabBarController的索引分别为0 1 2 1、接收到本地通知调用(AppDelegate中),该方法只有程序前台或后台的时候才有用,退出无法接收到消息即无法跳转,如需要在程序退出时推送通知...(重要) 原理:程序退出前发送通知给系统(加入调度池),并传出 userInfo 信息,然后退出,当触发通知时会唤醒AppDelegate的 didFinishLaunchingWithOptions...,进行相关逻辑处理(如回复消息) NSLog(@"identifier : %@",identifier); // 一旦接受必须调用方法(告诉系统什么时候结束,系统自己对内部进行资源调配...警告界面 警告说completionHandler这个回调没调用,系统希望知道你什么时候做完,系统到时自己内部进行资源调配

2.5K60

Android高频面试专题 - 基础篇(一)Activity

1.4 什么时候Activity不执行onDestory() 栈里面的第一个没有销毁的activity会执行ondestroy方法,其他的不会执行。...activity-A(以及activity-B)的onDestroy方法都不会执行; 1.5 进程重要等级和Activity的关系 前台>可见>服务>后台>空 前台:与当前用户正在交互的Activity...可见:Activity可见但是没有在前台所在的进程。 服务:Activity在后台开启了Service服务所在的进程。 后台:Activity完全处于后台所在的进程。...通常用于以下几种场景: 服务器下发跳转路径,客户端根据服务器下发跳转路径跳转相应的页面; H5页面点击锚点,根据锚点具体跳转路径App端跳转具体的页面; App端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面...在Activity中可以多次调用setContentView方法吗?说说不同时机第二次调用setContentView会发生什么

1.9K31

现代 WorkManager API 已发布

由于前台服务掌握着工作执行的生命周期,而前台服务又需要向用户展示通知信息,所以我们向 WorkManager 添加了相关的 API。...由于每次回调发生时都会提供一些最新的进度信息,所以我们可以利用这些信息来构建通知,并调用 setForeground 方法来向用户显示这些通知。...某个前台运行服务通知是无法简单滑动取消的,此前的做法是为这条通知消息添加一个动作,当用户点击时会向 WorkManager 发送一个信号,从而按照用户的意图终止某项工作。...随后调用 addAction 方法通知中的 "取消" 按钮与上一步创建的 Intent 关联起来。...因此从 Android 12 开始,调用 setForegroundAsync 方法会抛出 Foreground Service Start Not Allowed Exception (不允许启动前台服务

1.2K20

iOS 远程推送概念相关准备工作代码实现:(前提:确保bundleID和网站的配置一样)AppDelegate中的全部代码

概念相关 1.什么是远程推送通知?...顾名思义,就是从远程服务器推送给客户端的通知(需要联网) 远程推送服务,又称为APNs(Apple Push Notification Services) 2.为什么需要远程推送通知?...3.所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接 什么是长连接?...4.接收到通知后程序回调的代理方法 注意:要考虑三种情况,后台、前台、退出程序。...远程推送和本地推送一样,都需要在两个地方做代码的处理: 接受到通知调用的代理方法中(前台和后台) 启动时的 didFinishLaunchingWithOptions方法中(退出状态),用 launchOptions

1.9K100

Android 进阶4:Service 的一些细节

,这时如果我们的应用想与 Service 进行交互,就需要调用 bindService() 方法,因为这样客户端就可以拿到 Service 的 onBind() 方法返回的接口,然后进行操作。...为了节约资源,在完成任务后我们需要主动停止服务,停止服务有三个方法: stopService() Context 的方法,外部组件调用调用后系统会尽快销毁服务 stopSelf() Service...的方法,效果和 stopService() 一样 stopSelf(int) Service 的方法,它的特别之处在于参数和启动时的 id 一致才会被终止 也就是说如果在终止前又收到新的调用,就不会停止...如果将服务绑定到具有用户焦点的 Activity,则它不太可能会终止;如果将服务声明为在前台运行,则它几乎永远不会终止。...比如当某些后台工作(例如文件下载已经完成)且用户现在可以对其进行操作时,状态栏通知是最佳方法。 当用户从展开视图中选定通知时,通知即可启动 Activity(例如查看已下载的文件)。

1.1K80

Android 12 还没用上,Android 13 已经来了!

性能和电池(所有应用) 6.1 前台服务 FGS 管理器(新功能) Android 13 系统引入了前台服务 FGS 管理器功能,它会显示当前正在运行前台服务的应用列表,并且每个应用旁边都有一个 “停止...当用户点击 “停止” 按钮时,系统不仅会关闭该前台服务,还会停止整个应用。例如: 可以看出,这次改动 Google 是希望提高用户对前台服务的控制性。...在旧版本的前台服务并没有直接的停止按钮,只有一些些友好的应用会在前台服务通知中使用可操作性的关闭按钮。...(FGS "前台服务 (FGS) 任务管理器") 任务管理器") 6.2 JobScheduler 预提取作业优化 JobScheduler 预提取作业是 Android 9 引入的机制,通过调用 JobInfo.Builder.setPrefetch...: Android 13 引入了一个新的系统通知,当应用在 24 小时内消耗了大量电池电量时会显示; 新增一个前台服务提醒系统通知: Android 13 引入了一个新的系统通知,当应用的某项前台服务

1.2K20

Carson带你学Android:Service使用全面介绍(本地、可通信的、前台、远程)

(this, MyService.class); //调用bindService()方法,以此停止服务 bindService(bindIntent...Service 前台Service和后台Service(普通)最大的区别就在于: 前台Service在下拉通知栏有显示通知(如下图),但后台Service没有; 前台Service优先级较高,...Notification.Builder builer = new Notification.Builder(this); builer.setContentTitle("前台服务通知的标题...");//设置通知的标题 builer.setContentText("前台服务通知的内容");//设置通知的内容 builer.setSmallIcon(R.mipmap.ic_launcher...Service,并在系统的状态栏显示出来 } 2.3.2 测试结果 运行后,当点击Start Service或Bind Service按钮,Service就会以前台Service的模式启动(通知栏上有通知

52420

ios入门之消息推送

本地推送 不需要服务器支持(无需联网)就能发出的推送通知,app本地创建通知,加入到系统的Schedule里,如果触发器条件达成时会推送相应的消息内容,如常见的定时任务闹钟等。 ?...APP的时候的启动图片(无论字符串设置成什么内容,都是显示应用程序的启动图片) localNote.alertLaunchImage = @"111"; //设置通知中心通知的标题...这时候我们只需要调用下AppDelegate方法即可。...对于app被杀死的情况,要先启动app,启动完毕会调用AppDelegate方法。 需要特别注意的是:在iOS8.0以后本地通知有了一些变化,如果要使用本地通知,需要得到用户的许可。...// 当接受到远程退职时会执行该方法(当进入前台或者应用程序在前台) - (void)application:(UIApplication *)application didReceiveRemoteNotification

1.9K60

Android程序员该如何去手写事件通信方案LiveDataBus

5.组件和数据相关的内容能实时更新 组件在前台的时候能够实时收到数据改变的通知,这是可以理解的。...当组件从后台到前台来时,LiveData能够将最新的数据通知组件,这两点就保证了组件中和数据相关的内容能够实时更新。...当组件(Fragment、Activity)生命周期变化时会通过onStateChanged()方法回调过来。...根据Fragment/Activity生命周期发生变化时,移除观察者或者通知观察者更新数据。 当调用LiveData的setValue()、postValue()方法后,通知观察者更新数据。...使用者不用显示调用反注册方法。 由于LiveData具有生命周期感知能力,所以LiveDataBus只需要调用注册回调方法,而不需要显示的调用反注册方法

1.4K10

Android入门教程 | 四大组件之Service(前台服务,后台服务

例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。 前台服务服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。...即使用户停止与应用的交互,前台服务仍会继续运行。 启动前台服务 前台服务可以给用户提供界面上的操作。 每个前台服务都必须要在通知栏显示一个通知(notification)。...用户可以感知到app的前台服务正在运行。 这个通知(notification)默认是不能移除的。服务停止后,通知会被系统移除。...配置并创建一个Notification,例如配置标题,内容文字,图标等 启动前台服务调用startForeground(1, notification)方法 在设备上会显示出一个通知,点击这个通知,会跳转到...停止前台服务 在Service中调用stopForeground(boolean)方法,能停止前台,但是不退出整个服务。 这个boolean表示是否取消掉前台服务通知。false表示保留通知

5K30

【Android 进程保活】应用进程拉活 ( 双进程守护保活 )

) /** * AIDL 远程调用接口 * 其它进程调与该 RemoteForegroundService 服务进程通信时 , 可以通过 onBind 方法获取该 myBinder..." LocalForegroundService 在 onCreate 方法中开启前台服务 , 提权 , 参考 【Android 进程保活】提升进程优先级 ( 使用前台 Service 提高应用进程优先级...onServiceDisconnected 方法 ; 这里就在 onServiceDisconnected 方法中再次对本服务进行提权 , 并且再次绑定 " 远程前台进程 " RemoteForegroundService...* 其它进程调与该 RemoteForegroundService 服务进程通信时 , 可以通过 onBind 方法获取该 myBinder 成员 * 通过调用该成员的 basicTypes...* 其它进程调与该 RemoteForegroundService 服务进程通信时 , 可以通过 onBind 方法获取该 myBinder 成员 * 通过调用该成员的 basicTypes

3.2K21
领券