android anr异常常可以捕获吗

 1,程序异常退出 , uncaused exception 2,程序强制关闭 ,Force Closed (简称 FC) 3,程序无响应 , Application No Response (简称 ANR) , 顺便,一般主线 程...  previously delivered to it.&); goto U } } } 该流程 ANR 相关部分与按键处理流程类似,对于异常情况最终也调用 handleTargetsNotReadyLocked 方法来处...  尽量在可能出现异常的地方加入异常处理。 15. 简要解释一下 activity 、 intent...17.Android 应用容易发生 ANR 错误,请简述几种避免 ANR 错误的办法。 不要在...  传统 DVR 已经积累了 不少先进的技术,如硬盘零碎片处理、硬盘轮休、异常断电...若将 ANR 技术详细分解,其作用分为三步体现: 1) 网络实时侦测 ANR技术最基础...  3、Android 本身的 api 并未声明会抛出异常,则其在运行时有无可能抛出 runtime...2. ANR 是什么?哪些情况下会发生?开发时如何寻找 ANR? 3. 解释 AIDL 4. ...  当出现下列情况时,Android 就会显示 ANR 对 话框了: 对输入事件(如按键、触摸...如何避免?能否捕 获导致其的异常? 一般 Android 模拟器调试程序过程中,像空...  8.ANR 异常是什么?如何解决? 1、在 Android 上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户 显示一个对话框,这个对话框称作应用程序无响应(ANR:...  我们 先来看一下 ANR 的异常信息,使用 logcat 命令查看会得到类似如下的 log...下面详细说明,有八个关键 点需要注意: ① CPU 负载/平均负载 CPU 负载是指某...  邻区自优化算法系统内事件 ANR 通过 UE 切换测量和 UE 历史信息来检测漏配邻...3. 异常邻区识别 非正常邻区覆盖是针对 LTE 同频网络而言的。 非正常邻区...【Android】定位与解决anr异常记录
【Android】定位与解决anr错误记录
cocos2d-x游戏项目android工程接入sdk,支付成功后,java代码回调lua方法,产生了anr。
如何定位anr?
在data/anr/traces.txt文件中记录和anr错误信息。可以使用RE管理器查看该文件。
在日志信息中可以看到回调方法中调用的cocos2d-x的音频引擎播放音效的方法。就在这里产生了anr。我这里使用的是cocos2d-x2.1.5。
找到出问题的根源后,我把播放音效的代码注释了。然后再运行,就没有产生anr了。
但是,另一个问题又出现了...
报了一个OpenGL error,创建CCSprite也失败了。出现这样的问题一般是因为CCSpirte没有在GL线程中创建。
主线程与GL 线程
主线程(ui thread):app启动时创建的线程,其它线程都是该线程的子线程,主要用于更新UI的线程。
GL线程:主线程的一个子线程,主要用于更新GUI的线程。在Cocos2d-x中,会从主线程中分出一个GL线程用于画面渲染相关的工作(为了保证画面的流畅)。
Android下,Activity有一个runOnUiThread方法,该方法用于在主线程中执行一个任务。注意,如果该任务比较耗时会产生anr。
方法的声明如下:
public void runOnUiThread(Runnable task);
在Android下OpenGL的渲染需要与GLSurfaceView打交道。所以Cocos2d-x封装了一个Cocos2dxGLSurfaceView。该View是与GL线程相关的。Cocos2dxActivity中包含了一个Cocos2dxGLSurfaceView,并提供一个runOnGLThread方法,该方法用于在GL线程中执行一个任务。
方法声明如下:
public void runOnGLThread(final Runnable task);
实现上是调用了GLSurfaceView的queueEvent方法实现与GL线程通信。实现机制还是Android下的消息轮询。
最后,通过runOnGLThread方法,在GL线程中回调lua方法,问题就彻底解决了。
ctx.runOnGLThread(new Runnable() {
public void run() {
PayTools.payCallback(); //lua方法需要在GL线程中调用
Android开发错误信息与解决方案汇总
Android开发错误信息与解决方案汇总 【错误信息】 [ 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement! [ 16:39:10 - ApiDemos] Device API version i
Android 4.0.1源码编译错误记录笔记
详细教程请参考这里:http://my.oschina.net/chenshouyong/blog/94540
编译之前,建议留有足够的磁盘空间,我下载的是4.0.1版本,11.1G源代码!!!本人之前一次编译时,home下只 剩下4G就贸然编译,结果后来 no more space,害得我只
Android 封装了GPS定位与百度移动地图API定位
第一个:MainForm.java
/** * &br/& * Title: MainForm.java &br/& * E-Mail: [emailprotected] &br/& * QQ:
&br/& * Http: iaiai.ite
关于Android中ANR的一些思考
本人博客原文 以前做Android系统开发,一般很少写程序。现在到一公司做Android互联网应用,程序中不时出现一些ANR。
上峰对ANR非常的关注,期望我能彻底解决该项目的ANR。 ⊙﹏⊙b汗!
因此我对ANR进行了些思考,并和刚从腾讯QQ项目组跳槽来公司北京总部的某架构师同事进行了探讨。他也基本认同我的观点。
现将我应对ANR的思路整理如下:
求原因:广播中出现了ANR异常,接收的屏幕点亮广播android.intent.action.SCREEN_ON
08-02 14:55:31.760: E/ActivityManager(1351): ANR in com.android.bai 08-02 14:55:31.760: E/ActivityManager(1351): Reason: Broadcast
Android Socket通信代码及错误解决(Permission denied错误)
错误问题解决方案
在AndroidManifest.xml中加入此内容:
&uses-permission android:name=&android.permission.INTERNET& /&
Android用户定位(二)
1.获取设备支持哪些定位功能 获得LocationManager之后,通过 List&String& list=lm.getAllProviders(); for(String p:list) { System.out.println(p); }
获得设备支持的定位功能 2.选择你所需要的定位方式 通过Criteria来筛选定位功能 Criteria
通话记录软件 谁有写过通话记录软件的经历,可以不通过系统的数据库,用自己建立的数据库来存相关信息吗,如可以,怎么操作呢?
------解决方案--------------------
没写过,但应该是可以的。 每次通话后,把数据记录到自己的数据库就行了。。。 如果要自己的数据其他程序也能访问,就用ContentProvider。
Android ANR问题分析
可能会存在这样的情况,你写的代码通过了世界上所有的性能测试,但当用户尝试使用你的应用程序时,仍然让用户感到不爽。应用程序响应不够灵敏的地方包括——反映迟钝,挂起或冻结很长时间,或者需要花费很长的时间来处理输入。
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应 (ANR:Application
android 位置定位(通过基站方式辅助定位)
一般定位都是通过gps定位器,但这个过程比较慢.这里可以通过基站方式辅助定位 代码:
private TelephonyManager TM private void helpGetLocion() throws Exception { //获取服务 TMmanager = (TelephonyManager) getSyst
android应用的界面入口如何定位 比如说在MTK的,想要快速定位一个功能的入口(如设置),只要在debug模式下面,在EVENT.c文件中,有个EntryNewScreen函数,可以快速定位到设置的界面,因为每一个界面都有一个屏幕ID,可以根据这个一定位。
那么在android中,如果我想找到设置的入口,该怎么定位,我是菜鸟,请高手赐教,谢谢!
------解决方案----
android 地图定位问题 如果一开始网络打开的时候,我是可以完成定位的。 但是如果一开始断开网络,打开软件,不会自动完成定位。 这个是为什么的呢?mLocationManager.requestLocationUpdates(locationProvider, 2000, 0, listener);我已经注册了。 是不是因为断网了,然后没有注册成功?
------解决方案---------
android GPS定位,定位城市称,经纬度
package com. import android.app.A import android.content.C import android.content.I import android.location.A import android.location.Criteria
常用android shell命令记录 1.ANDROID命令行HOST操作
adb push C:\Users\Xiaopeng\Desktop\hosts /system/etc/hosts 导入
adb pull /system/etc/hosts e:/host.txt 导出
cat /system/etc/hosts 查看
2.命令行打印过滤T
解决Android布局中ScrollView与ListView的冲突
/read.php/7.htm
Android显示图片避免OOM和ANR小结
看完了文档里关于图片介绍的几篇文章,结合项目和一些网上的文章,谈下在android平台显示图片的一些个人想法。
1.从设计角度,最好不要让手机显示大于手机屏幕数倍的大图片,如果源图是个大图,加载时把图片缩小到屏幕大小,使用在decode图片时使用option选项,直接加载缩小后的图片。网上不少人说先读取图片InputS
Android部分错误以及解决方案汇总
错误1:AndroidRuntime(285): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {net.mickey.basic.learn/net.mickey.basic.learn.DisposeService
升级Android SDK到2.3错误的解决办法
升级了2.3的朋友应该知道,升级到2.3后,Eclipse会报错!不能编译运行了,解决办法如下。 1、因为升级后的2.3会在android-sdk-windows下创建一个platform-tools文件夹,其中包含了应该在tools文件夹下的东西,我们只需要将platform-tools文件夹下的所有文件复制到tools目录下。 2、然后在pl
简单的Android日志文件记录类
简单的Android日志文件记录类 import java.io.F import java.io.FileNotFoundE import java.io.FileOutputS import java.io.IOE import java.io.PrintW import java.io.
关于基站定位 下面链接是一个简单的基站定位,但是他是通过google获取经纬度的,考虑到google在国内不稳定,想找其他方法取代。也就是有没有其他的方法将基站信息转换成经纬度信息。
/rayee/archive//2336101.html
另外,关于HTML5的API获取经纬度,我已经尝试过了,对手机的兼容性比较差,百度高德
android --- 几个小问题记录
1、使用adb shell时出现: error: more than one device and emulator 无论怎么使用adb kill-server,然后再adb connect xx ,利用adb shell时还是出现以上错误。 开始怀疑是eclipse自动连接上了盒子,关闭掉eclipse还是会这样,重新pc发现还是出现此问题。 呵呵,,后
Android 中的ANR 问题,响应灵敏性
可能会存在这样的情况,你写的代码通过了世界上所有的性能测试,但当用户尝试使用你的应用程序时,仍然让用户感到不爽。应用程序响应不够灵敏的地方包括——反映迟钝,挂起或冻结很长时间,或者需要花费很长的时间来处理输入。
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Appli
Android ScrollView与ListView,GridView共存冲突解决方案
我们在真实项目中通常会遇到ListView或者GridView嵌套在ScrollView中问题。但是做的时候会发现,一旦两者进行嵌套,即会发生冲突。得不到我们希望的效果。由于ListView和GridView本身都继承于ScrollView,一旦
版本控制,android 节省流量 ----断点记录
下面的思路,本来是要做项目的, 但是后面给推掉了。所以没有实践, 如果有不对的地方,请原谅。还望多多指点。。。谢谢。
最近在做一个项目。 我们的同一条数据,本地(android)和服务器都有保存。 这就产生了一个问题,如何判断本地(服务器)的数据是正确的,也就是如何防止脏数据的存在。
思路:模仿svn
Android 项目导入eclipse中报错但找不到错误地方的解决方法
这个主要是导入项目的属性文件中的sdk版本与当前开发环境的sdk版本不同,在这里只需要稍微修改一 下项目的属性文件就可以,在android项目的default.properties 中的修改target的值,如果是2.1版本就将target的值改为android 7, 如果开发环境是2.3版本,就将target改为andro
android错误....
提示: Activity not started, its current task has been brought to the front 运行内容为上一次运行的缓存.... 解决方法: 1.重启模拟器 2.project-&clean
android ListView根据字母排序和定位
基本上很多应用都是用了这个功能当数据多时方便快速查看浏览定位查询等,本案例功能比较简单,需要跟完善的话就要继续优化。 先上运行效果图如下:
第一步:首相自定义SideBar类继承View类,用于绘制A-Z文字控件,如下:
import android.content.C i
android ListView根据字母排序和定位
基本上很多应用都是用了这个功能当数据多时方便快速查看浏览定位查询等,本案例功能比较简单,需要跟完善的话就要继续优化。 先上运行效果图如下:
第一步:首相自定义SideBar类继承View类,用于绘制A-Z文字控件,如下:
import&nbsp
android基于Gps 定位和基站定位获取经纬度
一:新建MyLocationManager.java类,本类是为了代码架构方便把地位经纬度的代码在这类中实现然后通过回调方法,在activity中显示;
import android.content.C import android.location.L import androi
android google地图定位开发,且可以自由移动位置重新获取定位,地址信息
一:申请key: 1.首先找到debugkeystore位置:   打开Eclipse---&Windows---&Preferences---&Android---&Build 一般是这样的路径C:\Documentsa
Android Tombstone/Crash的log分析和定位
http://www.rosoo.net/a/38.html
android 固定定位 m9 产生的bug
setJavaScriptCanOpenWindowsAutomatically 默认为false 在m9下 固定定位 position: 无效导致的问题 设置成true
android的用户定位---location使用
四个步骤: 1.添加权限 2.获取locationManager对象 3.获取locationProvider 4.绑定locationListener对象
首先在Manifest.xml中添加权限 &uses-permission android:name=&android.permission.A
Android *号与#号所对应的键码是多少 (KEYCODE) Android *号与#号所对应的键码是多少 (KEYCODE)
------解决方案--------------------
&*& KEYCODE_NUMPAD_MULTIPLY &#& KEYCODE_POUND 这两个常量在KeyEvent中都有定义。
Android4.0源码编译方法以及错误解决方案
历时一个星期,终于将android4.0源码编译成功,中间经历了各种曲折,非常之蛋疼,现在将编译方法共享一下:
Android源码编译步骤: (基于ubuntu11.10和android4.0) 1.安装JDK 2.&n
Eclipse下Android SDK一个错误的解决方法
错误信息: This Android SDK requires Android Developer Toolkit version 17.0.0 or above. Current version is 16.0.1.v-238534. Please update ADT to the latest version
android 自动定位时用 NETWORK_PROVIDER方式获取经纬度 NETWORK_PROVIDER方式如何获取经纬度呢?总是为null
------解决方案-------------------- 联通的卡吧?2.3以下的API版本吧?
------解决方案-------------------- 你怎么使用的?
------解决方案-------------------- to
android.content.res.Resources$NotFoundException错误的解决办法
EditText.setText(8);
当使用上面这样的代码时,将报错, 原因是将 这里的8 看为是资源。
正确的使用方法可以这样:
EditText.setText(8+&&);
android sdk manager安装SDK出现错误解决方法
android sdk manager安装SDK出现错误,当打开manager时,开始读取官网的SDK信息包,但是读一段时间总是显示 “Done loading packages”,停下来不动了!遇上这种问题一般的原因就是网络的问题。 读不出android sdk当中的package内容遇上这种问题一般的原因就是网络的问题。可能是
关于Android与pc通信时中文乱码的分析和解决
初步实现了Android与pc服务器的通信之后,又碰到了传说中令人头疼不已的中文乱码问题。既然出现了乱码,那么原因自然是协议不通了。我们知道eclipse中默认的编码标准是GBK,而安卓程序开发所默认的布局文件编码标准则是utf-8,这样一来,我们双方通信的时候便难免出现乱码。要解决12994人阅读
Android应用(105)
捕获未使用try catch捕获的异常可以使用java接口UncaughtExceptionHandler来实现默认的捕获异常的机制,当程序执行时发生未知异常时,可以通过实现UncaughtExceptionHandler来捕获。
1.先实现UncaughtExceptionHandler接口
实现UncaughtExceptionHandler接口后重写uncaughtException方法,当有未知异常发生时,就会执行到此方法。
需要注意的是,需要调用父接口UncaughtExceptionHandler的uncaughtException方法,否则会发生ANR,导致无法弹出【很抱歉,&XXX&已停止运行。】的对话框。
public class CustomExceptionHandler implements UncaughtExceptionHandler {
private static final String TAG = &CustomExceptionHandler&;
private UncaughtExceptionHandler mDefaultUEH;
public CustomExceptionHandler() {
Log.d(TAG, &------------ CustomExceptionHandler ------------&);
mDefaultUEH = Thread.getDefaultUncaughtExceptionHandler();
public void uncaughtException(Thread thread, Throwable ex) {
Log.e(TAG, &------------ uncaughtException ------------ & + ex.getMessage());
mDefaultUEH.uncaughtException(thread, ex); // 不加本语句会导致ANR
2.在Activity类中设置CustomExceptionHandler类为默认的异常捕获类
&&& @Override
&& &protected void onCreate(Bundle savedInstanceState) {
&& &&& &super.onCreate(savedInstanceState);
&& &&& &setContentView(R.layout.activity_main);
&& &&& &Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler());
&& &&& &int a = 1 / 0;
&& &}当执行到1/0发生除数为0的异常时,就会被CustomExceptionHandler类的uncaughtException方法捕获,即执行到此方法,用户可以做相应的处理,例如释放资源,保存设置等。
3.运行程序,log输出如下:
08-14 15:21:45.265: D/CustomExceptionHandler(13482): ------------ CustomExceptionHandler ------------
08-14 15:21:45.265: D/AndroidRuntime(13482): Shutting down VM
08-14 15:21:45.265: W/dalvikvm(13482): threadid=1: thread exiting with uncaught exception (group=0x40fbc300)
08-14 15:21:45.265: E/CustomExceptionHandler(13482): ------------ uncaughtException ------------ Unable to start activity ComponentInfo{com.test.andtest/com.test.andtest.MainActivity}: java.lang.ArithmeticException: divide by zero
08-14 15:21:45.265: E/AndroidRuntime(13482): FATAL EXCEPTION: main
08-14 15:21:45.265: E/AndroidRuntime(13482): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.andtest/com.test.andtest.MainActivity}: java.lang.ArithmeticException: divide by zero
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread.access$700(ActivityThread.java:131)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.os.Looper.loop(Looper.java:137)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread.main(ActivityThread.java:4866)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at java.lang.reflect.Method.invokeNative(Native Method)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at java.lang.reflect.Method.invoke(Method.java:511)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at dalvik.system.NativeStart.main(Native Method)
08-14 15:21:45.265: E/AndroidRuntime(13482): Caused by: java.lang.ArithmeticException: divide by zero
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at com.test.andtest.MainActivity.onCreate(MainActivity.java:15)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.Activity.performCreate(Activity.java:5143)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
08-14 15:21:45.265: E/AndroidRuntime(13482): && &... 11 more
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2479715次
积分:21935
积分:21935
排名:第253名
原创:259篇
转载:84篇
评论:602条
文章:15篇
阅读:196326
(2)(1)(1)(2)(3)(4)(1)(1)(1)(3)(1)(1)(1)(1)(1)(1)(1)(1)(2)(1)(1)(2)(3)(2)(4)(2)(5)(3)(4)(8)(4)(2)(6)(9)(7)(8)(10)(8)(11)(15)(5)(7)(4)(1)(11)(2)(1)(1)(6)(5)(10)(14)(8)(13)(7)(10)(38)(24)(8)(4)(2)(4)(7)(1)(2)(3)(1)(1)1、什么是ANR异常?
application not response 应用程序无响应。在用户进行一个操作,如果用户在6秒内没有操作的话,就会出现异常
代码示例:
import android.app.A
import android.os.B
import android.view.V
import android.widget.T
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
public void doSomething(View view) throws Exception {
Thread.sleep(10000);//让主线程睡眠
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("从网络获取数据成功!");
public void toast(View view) {
Toast.makeText(this, "十八大开幕了!", 0).show();
2、为什么会出现ANR异常?
android系统中处理用户操作的工作时在主线程中执行的,如果我们的程序在主线程中进行一些耗时的操作,导致用户的操作6秒不能够处理,就会出现异常。
主线程休眠,那么再点击程序,必须等主线程睡醒后才会反应。
所以在主线程中不要做太耗时的工作,因为主界面会阻塞。
3、解决办法:让这些耗时的操作放在新线程里面操作。
注意:如果新线程里面做的事情要更新界面的话,就要使用handler来操作。
连接网络的事都要放在新线程里面的。
解决代码(包括更新界面的操作,使用的是handler):
import android.app.A
import android.os.B
import android.os.H
import android.view.V
import android.widget.TextV
import android.widget.T
public class MainActivity extends Activity {
private TextView numTV;
private Handler handler = new Handler();
private int
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numTV = (TextView) findViewById(R.id.numTV);
public void doSomething(View view) throws Exception {
new Thread() {
public void run() {
for (i = 1; i & 20; i++) {
handler.post(new Runnable() {
public void run() {
numTV.setText(i + "");
System.out.println(i);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}.start();
public void toast(View view) {
Toast.makeText(this, "十八大开幕了!", 0).show();
阅读(...) 评论()

我要回帖

更多关于 android捕获全局异常 的文章

 

随机推荐