首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android常见bug跟踪

前言 对app的线上bug的收集(友盟、云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的。...BaseAdapter.getView 如果getView方法返回null,那么对应的ListView在显示时就直接触发NullPointerException异常。...但是无论是哪个界面的哪个ListView发生了这个错误,对应的异常信息总是这样的: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.hxw.myapplication...一个Exception,包含position,getItemViewType的数据,方便定位 // 或者生成一个默认的View,提供给用户有用的信息——如果的确不至于让app crash...根据堆栈,在页面的ListView显示其childView时,如果getView返回null,android.widget.AbsListView.obtainView方法就抛出异常。

1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发的那些坑和小技巧

    如果你设置了此属性值为false,就能实现一个在布局上事半功陪的效果。先看一个效果图。 ? 上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示。 ?...假设现在ListView有8条数据,match_parent需要new出7个对象,而wrap_content则需要8个。这里涉及到View的重用,就不多探讨了。...一开始我用ViewPager + PhotoView(一个开源控件)显示图片,在多点触控放大缩小时就出现了这个问题。一开始我怀疑是PhotoView的bug,找了半天无果。...但是还有另外一个问题:我每次加载这个界面花的时间太长了,每次由其它界面启动这个界面时,都要卡上1~2秒,而且因手机性能时间不等。并不是由于网络请求,取数据由子线程做,跟UI线程毫无关系。...去掉radius属性确实可行,可我想保留怎么办? 还有一个解决办法,通过在androidManifest.xml中禁用硬件加速,为了控制粒度,我只在此activity中禁用此功能。

    1.1K30

    如何从消失的异常堆栈定位线上问题

    阅读本文,您将对异常堆栈消失问题有更深入的了解,并掌握解决问题的方法和技巧。 01 消失的异常堆栈 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。...由此我的Runner探索之旅开始了! 在618保障大促稳定性过程中,消失的异常堆栈可能会带来严重的麻烦,因为这些堆栈信息是我们解决线上问题的关键之一。如何快速定位问题?...然而有时异常堆栈并不完整,只有一句描述,如下: Caused by: java.lang.NullPointerException 造成这种现象的原因其实很简单,原因如下: JIT编译器对异常进行了优化...fast throw优化的原因是为了提高性能。当同一种异常在相同的位置被抛出多次,编译器就会重新编译此方法。重编译后,编译器可能会使用不提供跟踪的预分配异常来选择更快的策略。...,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目 TCP重传主要是为了保证数据传输的可靠性,TCP是一种保证可靠传输的机制,如重传与确认机制、数据校验

    29020

    android的适配器作用,适配器在Android中的作用是什么?

    ListViews实际上并不包含任何数据。它只是一个没有数据的UI元素。您可以使用Android适配器填充ListView。 Adapter是一个接口,其实现提供数据并控制该数据的显示。...TextView自己的适配器完全控制ListView的显示。因此适配器控制列表中显示的内容以及如何显示它。 TextView接口包括将数据传送到ListView的各种方法。...第三个参数:写入数据的TextView的ID 第四个参数:数据数组 Prashant_M answered 2019-06-30T01:12:49Z 22 votes 我想分享一下我的理解。...AdapterView的示例是ListView。 适配器还提供显示AdapterView中数据的子视图。适配器负责提供数据并创建表示每个项目的视图。...如果想要显示某些信息的报告,可以使用此工具在视图上显示数据。

    1.6K40

    Java 14 来势汹汹,这回让空指针无处遁形!!

    空指针异常神鬼莫测,它几乎可以出现在程序中的任何位置,想尝试捕获处理是不太切实际的。...背景 我们一般要通过 JVM 异常报告的代码位置去处理,JVM 会打印出导致空指导异常的详细类名、方法名以及行号,如以下异常所示: Exception in thread "main" java.lang.NullPointerException...如果 JVM 可以提供足够明确的信息以显示空指针异常的具体来源,而无需额外的代码、工具来定位,那么这对开发人员、或者线上问题定位都举足轻重。...、异常消息会导致行很长,所以为了保持可读性,会在第二行显示详细异常信息。...1)性能 如果应用程序频繁地抛出并打印异常堆栈消息,势必会带来一定的开销、影响性能,所以应尽量避免这种开销。

    51320

    定位生产问题时,异常堆栈莫名丢了,何解?

    今天分享的这个知识有点冷,相信很多 Java 程序员很少遇到,废话不多说,直接进入排查问题的真实讨论现场。 小 猿:有个 NPE 异常,有空帮忙看看是哪里出的?...架构狮:我没有看到空指针堆栈啊!? 小 猿:有堆栈我就自己找问题了,就不劳驾您老啦(捂嘴笑)。 架构狮:是不是 NPE 报了好多次? 小 猿:是。...架构狮:一猜就是,因为只有报了很多次,Java 才会自动不打印异常堆栈信息(言外之意:报了多了 java 会省略的),那就找找最开始报异常的日志,肯定会有堆栈信息的(哈哈,心里有谱啦),这种机制叫做 fast...java.lang.NullPointerException at NPETest.main(NPETest.java:11) 一会儿的功夫,输出却变成下面这个样子,异常堆栈确实丢了。...如果想关闭这个优化,通过配置 -XX:-OmitStackTraceInFastThrow 就可以。 接下来还是跑上面 NPETest 的例子,配置 VM 参数,一起操作一把。

    1.3K20

    2014-10-31Android学习------SQLite数据库操作(四)-----数据库模块(二)增删改查实例展示

    首先需要让当前的数据库销毁掉,然后再调用上面的onCreate函数就可以 4).就下来就是写自己的表操作函数,增删改查 2.展示界面的实现 1).这里也是自定义了一个ListView控件,那么我需要给配置一个适配器...作为替代,可以使用LoaderManager用CursorLoader 这里说应用程序的UI线程可能会导致异常,应该是当数据量过大的时候,查询时间需要很久,超过6秒,那么就会出现anr异常把,我猜是这种...意思就是将游标中的数据显示在布局文件中哪些控件上,这个参数是控件的id号 flags:用于确定适配器的行为 其实这里我们也可以用前面讲到的SimpleAdapter去实现它,那就是参数不是游标数据...,当这个新的游标值返回来的时候(当你定义的新的游标有值的时候),你就能够在异步更新视图列表中做到这一点(让数据库中最新的数据显示在列表中) 下面我们要思考为什么重复查询很危险,不推荐使用呢,我想更上面的那个构造...好像听说只有6秒,具体多少我也不清楚,超过这个时间,程序肯定蹦了,出现anr异常 这就是为什么如果一个业务的处理需要花费很多时间的时候,我们需要服务或者新开一个进程去让执行,等他们执行完了告诉主线程

    60140

    Andorid-ListView简单使用以及BaseAdapter入门

    之后每绘制一个Item就会调用一次getView方法,在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。...也正是在这个过程中完成了适配器的主要转换功能,把数据和资源以开发者想要的效果显示出来。也正是getView的重复调用,使得ListView的使用更为简单和灵活。  ...这两个方法是自定ListView显示效果中最为重要的,同时只要重写好了就两个方法,ListView就能完全按开发者的要求显示。...我们从主动调用不同定义的getItem()方法来说明此例,BaseAdapter真的没有调用此方法,否则一定会爆出空指针异常。...简单地说,Android允许将一个long类型的数据附加到任何ListView对象的元素上,对,这是附加的,实际上你可以选择忽略此值。

    1.4K20

    已解决异常:Servlet.service() for servlet in context with path [] threw exception

    一、Bug描述 今天开发的时候,遇到了这个bug: “dispatcherServlet” 的异常问题。...二、定位报错点及原因 我第一反应是MVC的映射出了问题,就是JVM编译的时候有个 servlet的加载和调用失败了。...Controller内部完成请求的数据模型的创建和业务逻辑的处理,然后再将填充了数据后的模型即model和控制权一并交还给DispatcherServlet,委派DispatcherServlet来渲染响应...如下图所示 方案4:SpringBoot 注解没有正确使用 具体问题要具体分析,问题的描述在异常里写的很清楚,比如我的异常是“… java.lang.NullPointerException: null...数据; 需要注意的是,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

    5.8K10

    ListView:The content of the adapter has changed but ListView did not receive a notification终极解决方法

    使用ListView时遇到如下的异常信息: 10-26 18:30:45.085: E/AndroidRuntime(7323): java.lang.IllegalStateException: The...)] 其实我在listview的adapter添加完数据后,使用了handler去调用datper.notifyDataSetChanged();来通知listview显示变化结果; 虽然自己很确定没有多线程操作...但是实际上用的时候我发现也会出问题,想了想最彻底的解决办法 彻底解决方法: 把  listview的adapter数据更新和dapter.notifyDataSetChanged()方法的调用必须同时放到单独一个线程里...解决更新ListView数据时出现的问题分析总结:   没仔细读的话,一眼看去就说说在非UI线程去更新了ListVIew的数据,然后下意识的认为是调用adapter.notifyDataSetChanged...方法的调用被放到了非UI线程,仔细一看是说更新ListView的数据以及通知数据更新要放到同一个线程(主线程),是为了保持数据一致,adapter里面一般是会存放一个数组,对那个数据的修改和调用notifyDataSetChanged

    1.5K70

    移动应用常见Bug汇总及预防方法

    没有Bug是任何产品上线前都无法达到的一个目标,包括拥有资深的测试工程师也不能保证上线后100%没问题,因为我们谁也不能把所有功能的操作、运用场景想周全,做周全。...、XXX查看等说明字样),(弹出的)界面要有标题,标题与内容要一致 2.4 不同界面显示相同字段的一致性(如列表界面和编辑界面) 2.5 界面按钮显示要求(查询、新增、删除顺序) 2.6 列表的顺序排列应该统一...“保存/提交成功”提示信息,并自动更新显示 3.3 所有有提交按钮的页面都要有保存按钮(每个界面风格一致) 3.4 凡是点选或者下拉选择的界面,如果一旦选择完了无法回到不选择的情况,需要加上“清除选择”...(手动输入 、点选 、下拉选择) 4.6 出报表的时候,查询条件需要显示在报表标题的下面,这样看报表的时候知道数据的依据是什么 4.7 对于范围的查询采用全闭的形式(如 [2006-1-1,2006-12...我改成10秒就ok了。

    1.2K21

    Android ListView等列表设置空布局

    大家好,又见面了,我是你们的朋友全栈君。...在Android平台上,listView 是特别常用的组件之一,我们在向用户展示列表数据时,通常要考虑: 列表有数据和无数据空的状态,因为网络环境各异,难免刷新失败什么的; 在此之前我是使用ViewStub...来实现,通过判断listview列表数据是否为空来设置ViewStub的隐藏和显示,或者设置lIstview的显示或隐藏; 但是,对ViewStub不是特别的了解,把控不好,只是控制其显示和隐藏,如果对其设置点击刷新数据等交互时...(android listview空布局刷新数据:列表无数据时显示数据加载失败的提示,并且点击提示,刷新数据); 我们来看一下ListView的继承关系, ListView extends AbsListView...放同一个布局, 这个点我们看源代码实现方法也是让他们交换显示的参数,而不是添加或者删除组件视图.

    77820

    你知道吗,Flutter内置了10多种show

    ,调用showBottomSheet抛出异常。...isScrollControlled参数指定是否使用可拖动的可滚动的组件,如果子组件是ListView或者GridView,此参数应该设置为true,设置为true后,最大高度可以占满全屏。...buildSuggestions是用户正在输入时显示的控件,输入框放生变化时回调此方法,通常返回一个ListView,点击其中一项时,将当前项的内容填充到输入框,用法如下: @override Widget...Search”时回调此方法,一般返回ListView,用法如下: @override Widget buildResults(BuildContext context) { return ListView.separated...如果有,请在文章底部留言和点赞,以表示对我的支持,你们的留言、点赞和转发关注是我持续更新的动力!

    1.8K10

    java堆栈信息不见了

    问题描述 最近同事通过ELK查找异常日志发现,exception的栈不见了,如下所示: 异常信息:java.lang.NullPointerException 异常信息:java.lang.NullPointerException...异常信息:java.lang.NullPointerException 本地试了很多次一直都能打印出异常信息,那么前面那段只有简单的java.lang.NullPointerException,没有详细异常栈信息的原因是什么呢...于是他问怎么出现这个现象的,我跟他说这种情况是 JVM对一些特定的异常类型做了Fast Throw优化导致的 java.lang.NullPointerException ......JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用Fast Throw方式来抛出异常,而异常Trace即详细的异常栈信息会被清空...如果想关闭Fast Throw的优化,在启动参数加上配置 -XX:-OmitStackTraceInFastThrow, StackTraceInThrowable保持默认配置即可。

    1.3K20
    领券