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

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是否泄露的问题

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


版权声明:本文为weixin_39690958原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。