qt 一个线程接收数据 主线程更新界面 会造成界面退出 怎么解决_遇到App闪退,如何解决?...

本文列举了导致App闪退的常见原因,包括网络请求保护、主线程死锁、数据安全处理、数据回调安全判断以及野指针和内存泄露。针对这些问题,提出了设置网络断网保护、防止死锁、做空值处理、数据安全判断以及使用内存检测工具等解决方案。
摘要由CSDN通过智能技术生成

d67ec05ff0206edf5e7281aa7990eea8.gif

 在应用app的时候,我们常常会遇到app闪退各类的问题。

那么怎么解决和分析,以及处理这些问题,我在这里列举几个常见的app闪退的问题,并希望大家可以通过这几类分析,尽量避免app闪退这样的大问题。

第一点,网络数据的请求和保护,在app进行网络切换的时候,如果没有做好网络保护,是会出现app闪退问题的,所以,在网络请求类中,设置好网络的断网保护,就可以解决这类问题了

Android应用程序中用Broadcast来监测"断网",并进行相应处理

public @Override

第二点,主线程的死锁 

一般造成死锁必须同时满足如下4个条件:

  1,互斥条件:线程使用的资源必须至少有一个是不能共享的;

  2,请求与保持条件:至少有一个线程必须持有一个资源并且正在等待获取一个当前被其它线程持有的资源;

  3,非剥夺条件:分配资源不能从相应的线程中被强制剥夺;

  4,循环等待条件:第一个线程等待其它线程,后者又在等待第一个线程。

因为要产生死锁,这4个条件必须同时满足,所以要防止死锁的话,只需要破坏其中一个条件即可。

第三点,数据安全保护,在数据和网络服务器之间进行交互的时候,服务器返回的空类型有多种多样类型,可以为null,也可以为空类型加nukl,可以有空格等,所以,在做好空值处理的时候,需要考虑多种情况,如果空值判断不好,也是会出现闪退问题的,再者就是最好在数据处理的时候,添加空值判断

第四点,数据的返回,做安全判断,在服务器对接的时候,如果数据处理没有做好,返回回调的数据安全判断,也是会出现闪退问题

第五点,野指针或者内存泄露,这个就需要启用Zombie Object进行悬挂指针的检测。

或者 应用Product -> Analysis进行内存泄露的初步检测。

也 可以在xcode的build setting中打开implicit retain of ‘self’ within blocks,xcode编译器会给出警告,逐个排查警告。

抑或  应用Leak Instrument进行内存泄露查找。

在以上方法不奏效的情况下,通过查看dealloc是否调用查看某个class是否泄露的问题

--------------------- 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值