Android主页面进程卡死黑屏怎么办?多线程机制来解决

news2025/5/31 19:45:53

 问题描述

在做一个页面跳转小案例,在输入页输入要计算第几项斐波那契数列,然后跳转到另一个页面显示计算的结果,当输入的值很大时,跳转到另一个页面时,页面卡死黑屏

页面卡死黑屏

 问题原因

        计算斐波那契数列的常规方法就是使用递归,而递归方法当输入的数值非常大的时候将非常耗时,此时如果在页面刚刚创建时就调用递归方法来计算巨大的斐波那契数列值将会使正常运行的主页面进程卡死中断,转而去计算这个巨大的值,等到计算完成才能正常显示页面。显然,这是导致卡死黑屏的根本原因。

主进程被耗时操作卡死示意图

 

 

解决方案

        我们可以将耗时的计算巨大斐波那契数列值的操作放在另外一个开辟的子线程里面进行,从而不影响主线程的正常执行,也就不会导致主线程崩溃卡死页面黑屏。

思路示意图

 

 优化前核心代码,与主线程同时执行:

  优化后核心代码,子线程与主线程分别同时执行:

 优化效果

        这里我输入计算第100项的斐波那契数列值,主页面可以出来不再黑屏,只是没有计算结果显示,因为子线程正在计算中,见下面第二张图片。

主页面正常显示没有卡死黑屏

 

查看日志看到子线程正在执行计算

 END.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux--fork

一、fork入门知识 fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。可以简单地说fork()的作用就是创建一…

如何在Python里使用ChatGPT及ChatGPT是什么?怎么注册?

废话不多说,直接开干! 需要库 pip install openaiimport openai# Set your API keyopenai.api_key "你的chatgpt的密钥key"# Use the GPT-3 modelcompletion openai.Completion.create(engine"text-davinci-002",prompt"Once upon …

纯CSS实现[喵咪小挂件]

效果预览 网页上: 小程序中: 在微信小程序中使用时,将div标签改成view即可。 小程序中封装 如下,在小程序中可封装成组件(方便使用) 1、先在components目录下新建一个目录存放该组件。 2、右键上一步…

Unity-ROS与激光雷达小车搭建(五)

0. 简介 我们在第三章和第四章中详细介绍了如何使用URDF以及Navigation 2,而第五章开始我们将学习如何将前面所学的结合起来,来形成一个Unity与ROS完整且系统的框架 1. 创建并导入URDF 这一部分作为我们第三讲的内容,我们在之前的基础上通…

【STL】综述

STL,一文即可知 文章目录一、STL基本知识概述容器二、序列式容器详述数组容器array向量容器vector双端队列容器deque链式容器list正向链容器forward_list参考博客😊点此到文末惊喜↩︎ 一、STL基本知识 概述 STL六大组件(前三个是主要的&am…

在线支付系列【21】微信支付服务商接入前准备

有道无术,术尚可求,有术无道,止于术。 文章目录项目概述接入准备1. 注册服务商号(获取服务商mchid)2. 注册公众号(获取服务商APPID)3. 绑定应用ID和服务商ID4. 入驻子商户(特约商户进…

MyBatis基础知识

1 JDBC基础知识1.1 JDBC简介JDBC是使用Java语言操作关系型数据库的一套API,全称Java DataBase Connectivity,Java数据库连接。JDBC定义了操作所有关系型数据库的规则,同一套Java代码可以操作不同的关系型数据库。也就是JDBC是Java语言操作数据…

分布式高级篇3 —— RabbitMQ

一、RabbitMQ1、RabbitMQ 介绍2、RabbitMQ 的相关概念3、安装 RabbitMQ4、交换机类型(1)direct - 直连交换机(2)fanout - 扇出交换机(3)topic - 主题交换机5、RabbitMQ 管理界面6、SpringBoot 整合RabbitMQ…

Autowired注解源码解析

一、Autowired注解的原理的概览 我们都知道一个Bean的大致生命周期有这几个阶段,实例化--> 属性填充 --> 初始化 --> 销毁回调 其中Autowired作用的时间就是在属性填充阶段,而且是通过AutowiredAnnotation BeanPostProcessor类进行处理的。注…

android14预览版介绍及解读

​ 前言: android14快要来了,最近2月8日,android14的第一个开发者预览版发布了,正式版大约会和往常一样,大概率在六月份左右推出,八九月份时会有国内会有第一批手机支持安卓14。所以,本文就带…

为什么要用频谱分析仪测量频谱?

频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路系统的某些参数,是一种多用途的电子测量仪器。从事通信工程的技术人员,在很多时候…

免费下载学术文献的网站,好用!

推荐几款好用的免费下载学术文献网站,让你的查找文献环节更加事半功倍! 1、Open Access Library(OALib)图书馆让学者可以免费下载学术文献和论文,并在这个平台上发表自己的论文。提供Open Access数据库资源。 2、文献…

Spring Security实现RBAC权限模型练习

1.Spring Security介绍 Spring Security的核心功能就是认证、授权、攻击防护,Spring Boot项目启动之后会自动进行配置,其核心就是一组链式过滤器。 如下图所示,对于一个用户请求,Username Password Authentication Filter验证用…

2022年API安全研究报告

导读 API应用的增速与其安全发展的不平衡,使其成为恶意攻击的首选目标,围绕API安全的攻防较量愈演愈烈。 2022年API安全风险概况 2022年平均每月遭受攻击的API数量超21万 2022年全年平均每月遭受攻击的API数量超过21万,第二季度(4-6月)遭受攻击的API数量达到高峰,月均…

经典文献阅读之--IGP2(可解释性目标的自动驾驶预测与规划)

0. 简介 对于自动驾驶的预测和规划而言,能够有效的对目标产生可解释性是非常有必要的,而《Interpretable Goal-based Prediction and Planning for Autonomous Driving》文中就提出了一种综合的自动驾驶预测和规划系统,它利用合理的逆规划来…

php mysql娱乐场所运营管理系统

目 录 1 背景与意义 3 1.1 研究背景 3 1.2 国内外发展状况研究 3 2 系统开发环境与技术 4 2.1 PHP介绍 4 2.2 MYSQL介绍 5 2.3 APACHE介绍 6 2.4 dreameaver介绍 7 2.5 wamp介绍 7 3 系统分析 8 3.1 系统可行性分析 8 3.1.1 技术可行性 …

【编程基础之Python】1、初始Python

【编程基础之Python】1、初始Python初始Python什么是PythonPython的运行过程Python的应用领域如何学好Python初始Python Python是一种跨平台的、开源免费的、解释型的、面向对象的高级编程语言。 Python的应用领域非常广泛,包括客户端程序、服务器程序、移动端程序…

Redis未授权漏洞蜜罐模拟与捕获分析

1.概述 文章主要分析Redis未授权漏洞的原理及形成原因,使用vulhub靶场进行漏洞复现,在了解漏洞原理并复现的基础上使用golang编写蜜罐代码进行模拟,开放端口在网上捕获真实存在的恶意攻击行为,对恶意样本进行分析,总结…

C++与Lua交互实例 -- 矩阵的加减乘除(版本二)

C与Lua交互实例 – 矩阵的加减乘除(版本二) TIPS:关于使用矩阵的加减乘除测试C与Lua的交互以及下面没讲述到的知识点可以阅读第一版: https://blog.csdn.net/qq135595696/article/details/128960951 同时下面两个方式矩阵的数据都…

爬虫JS逆向思路 - - 扣JS(data解密)

网络上几千块都学不到的JS逆向思路这里全都有👏🏻👏🏻👏🏻 本系列持续更新中,三连关注不迷路👌🏻 干货满满不看后悔👍👍👍 ❌注意…