我是靠谱客的博主 狂野航空,最近开发中收集的这篇文章主要介绍android生命周期代码,Android活动生命周期和JNI本机代码生命周期,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我有一个简单的应用程序与本机代码.也就是说,Activity加上本机代码.

当活动进入后台时,我会保持本机代码运行以进行一些处理.问题是当活动被操作系统杀死时(由于资源不足),JNI代码似乎不知道Java领域发生了什么,仍然在做它的工作,因此浪费了资源.为什么Android只会杀死Activity而不是整个进程?在这种情况下,本机代码如何知道活动被杀死了?可能无法调用OnDestroy().

解决方法:

Android应用程序中的Activity在文档中描述为

An activity is a single, focused thing that the user can do.

它通常在屏幕上可见,并引起用户的注意.它与一个状态机相关联,该状态机描述了当另一个活动变为活动时显示和隐藏的生命周期.操作系统可自由地启动和停止活动,因为它选择了 – 并且内存允许.

此外,Android架构的一个关键点是活动和服务是可重用的软件组件,并不一定与流程有一对一的关系.在同一过程中,您的活动可能是系统中另一个进程正在使用的服务.

如果活动收到onPause(),onStop(),onDestroy()通知时,代码的JNI部分仍然在后台处于活动状态,则只能是因为您尚未将这些消息转发给它.系统当然不知道如何清理本机代码的资源利用率 – 特别是使用new()或malloc()分配的内存.除非您将其释放,否则只有在流程终止时才能恢复.

如果您担心的是您的活动没有被系统快速杀死,并且因此保留了对原生土地资源的引用,那么这是系统不受资源限制的好兆头.

您可以考虑将应用程序的本机部分实现为Service,并在短时间内自行销毁.

标签:android,android-activity,lifecycle,java-native-interface

来源: https://codeday.me/bug/20190624/1282327.html

最后

以上就是狂野航空为你收集整理的android生命周期代码,Android活动生命周期和JNI本机代码生命周期的全部内容,希望文章能够帮你解决android生命周期代码,Android活动生命周期和JNI本机代码生命周期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(99)

评论列表共有 0 条评论

立即
投稿
返回
顶部