开发中遇到的bug及解决方案(一)

原创 2018年04月15日 13:17:25

1.Toast不显示

原因:1.国内厂商乱改room(小米手机)

         2.通知权限被关闭(三星手机)

解决:这是帮助我处理这些乱七八糟的问题的Toast库 https://github.com/Blincheng/EToast2

2.Dialog.show()导致崩溃

#36 android.view.WindowManager$BadTokenException
Unable to add window -- token android.os.BinderProxy@e2e87ad is not valid; is your activity running?

该异常表示不能添加窗口,通常是所要依附的view已经不存在导致的。
[解决方案]:Dialog&AlertDialog,WindowManager不能正确使用时,经常会报出该异常,原因比较多,几个常见的场景如下:
1.上一个页面没有destroy的时候,之前的Activity已经接收到了广播。如果此时之前的Activity进行UI层面的操作处理,就会造成crash。UI层面的刷新,一定要注意时机,建议使用set_result来代替广播的形式进行刷新操作,避免使用广播的方式,代码不直观且容易出错。

2.Dialog在Actitivty退出后弹出。在Dialog调用show方法进行显示时,必须要有一个Activity作为窗口的载体,如果Activity被销毁,那么导致Dialog的窗口载体找不到。建议在Dialog调用show方法之前先判断Activity是否已经被销毁。

3.Service&Application弹出对话框或WindowManager添加view时,没有设置window type为TYPE_SYSTEM_ALERT。需要在调用dialog.show()方法前添加
dialog.getWindow().SetType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)。

4.6.0的系统上, (非定制 rom 行为)若没有给予悬浮窗权限, 会弹出该问题, 可以通过Settings.canDrawOverlays来判断是否有该权限.

5.某些不稳定的MIUI系统bug引起的权限问题,系统把Toast也当成了系统级弹窗,android6.0的系统Dialog弹窗需要用户手动授权,若果app没有加入SYSTEM_ALERT_WINDOW权限就会报这个错。需要加入给app加系统Dialog弹窗权限,并动态申请权限,不满足第一条会出现没权限闪退,不满足第二条会出现没有Toast的情况。

//解决办法 判断Activity是否被销毁
  一般会遇到这样的情况:在一个Activity中启动一个异步任务,异步任务中需要返回值,然后被Activity使用,但是当异步任务还未结束时,按下home键,如果这个时候系统内存比较紧张,这个Activity有可能被销毁(如果使用小米手机进行真机调试,可以在开发者选项中开启不保留活动选项),这个时候异步任务返回后会报异常,那如何解决这种问题,最简单的办法是在异步任务返回后做一下判断,若Activity已经被销毁了,则直接返回,不做任何处理。
  一般我们会使用activity.isFinishing()方法,若Activity被结束,这返回true,否则的话返回false。在实际的项目中发现这样还不行,还需要使用activity.isDestoryed()方法来判断activity是否被销毁,但是有个问题是isDestoryed()方法支持的最低版本为Level 17,那对于17版本以下的如何去处理呢?

  可以使用FragmentManager对象来判断,即
        if(fragmentManager.isDestroyed) return;

API doc 下这样写道:
/**
* Returns true if the final {@link Android.app.Activity#onDestroy() Activity.onDestroy()}
* call has been made on the FragmentManager's Activity, so this instance is now dead.
*/
public abstract boolean isDestroyed();
意思很明显,如果Activity被销毁的话,那么fragmentManager 的实例也死亡了。

3.创建fragment对象调用其中方法崩溃

原因:fragment创建后还未添加进activity

解决:调用前判断一下fragment.isAdded();


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr_theSun/article/details/79948401

项目开发中遇到的--Bug知识整理!

====第一个Bug====》》  目前测试出现在IE7,IE6中。     问题:标签,经测试,不兼容IE7,IE6. (个人建议不要使用button标签)     解决方案:改成 /...
  • andyliulin
  • andyliulin
  • 2016-08-19 13:31:20
  • 968

java开发中遇到的Bug整理

java开发中遇到bug是再正常不过了,所谓程序不是写出来的是调出来的,bug的调试是程序开发中重要的一部分也是必不可少的一部分。以下是我项目开发中遇到的bug整理,有一些可能比较低级,但是我还是把它...
  • nqmysbd
  • nqmysbd
  • 2016-11-05 11:26:12
  • 2671

开发过程中遇到的bug以及解决办法 面试回答个人遇到

前后端分离跨域问题,前后端分离带shiro跨域问题,前后端分离ip不同机器之间跨域问题...
  • u013208953
  • u013208953
  • 2017-10-12 15:41:31
  • 232

spring开发中遇到的bug及解决方法

目录 一、 NoClassDefFoundError 1 二、 IllegalStateException 1 三、 今天在学习SpringMVC时,遇到了一个问题 1 四、 java.lang.No...
  • fulq1234
  • fulq1234
  • 2017-01-13 14:45:58
  • 1437

第二个电商项目Bug点统计和解决方法

第二个完成的项目。在完成项目后,我总结了那些自己感觉重要的BUG. 1. BUG系列一:设置延时,导致Activity销毁后,延时中的PullToRefreshListView 为null ...
  • u012881042
  • u012881042
  • 2016-06-14 09:55:53
  • 1218

新手Python上路 不断更新碰到的各类bug

Greetings, 最近某公司的OA强制要求C++或者Python,尼玛赤裸裸的歧视Java选手,不能忍啊,虽然说学C++这样开发语言通吃了,不过想想当年学C语言那指针蛋疼的操作,**P *&p...
  • fantasiasango
  • fantasiasango
  • 2016-09-22 02:19:28
  • 890

项目开发中遇到的问题及解决办法

1:hql模糊查询不匹配问题---->忘记了加%%模糊匹配符
  • yunfengfengfeng
  • yunfengfengfeng
  • 2017-09-02 14:32:44
  • 418

java项目遇到风险漏洞示例与解决方案

在十九大召开之前,出于安全生产的考虑,公司的项目遭受了各种途径的测试,检出了一堆bug,然后就是加班、修改、测试、加班。。。。。。 在此把项目的一些风险漏洞和解决方案记录下来。 1. 敏感信息泄露 ...
  • leo187
  • leo187
  • 2017-10-20 14:29:01
  • 358

项目中遇到的bug(web前端-持续更新)

项目中遇到的常见bug,及时整理。 input放在a标签里面单机不能获取input的光标(IE环境下)双击才可以获得焦点,目前有的解决方案: 不要给a标签添加href属性; 不要在外面套上a标签。 返...
  • wkyseo
  • wkyseo
  • 2016-04-15 10:11:30
  • 3662

Flask WEB 开发(基于Python的Web应用开发实践)遇到的bug

近期在阅读Flask WEB 开发(基于Python的Web应用开发实践) ,从读者的github源码上下载下来并进行实践。 在实践过程中发现其中一个部分的代码bug,导致部分功能实现不了(并不是什...
  • u010069176
  • u010069176
  • 2016-08-03 16:28:58
  • 299
收藏助手
不良信息举报
您举报文章:开发中遇到的bug及解决方案(一)
举报原因:
原因补充:

(最多只允许输入30个字)