关于ANR的问题

ahaso 2013-04-14 04:25:09
求教,如果程序发生anr,还会有log产生么。
在activity启动过程中就发生anr,但是连oncreat里的log都没有。。。请大牛指点
...全文
248 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mourinho 2013-04-17
  • 打赏
  • 举报
回复
建议在可能耗时的方法前后加上时间点,找出耗时的方法,然后再进行优化处理。 最好不要把耗时的方法放在onCreate里面
ahaso 2013-04-17
  • 打赏
  • 举报
回复
再顶一下,求帮助
ahaso 2013-04-16
  • 打赏
  • 举报
回复
自己顶一下,surfaceview的创建会造成anr么,finbgBitmap = ((BitmapDrawable) (getResources() .getDrawable(R.drawable.white))).getBitmap()或者创建Bitmap造成了anr
csdn_2013 2013-04-15
  • 打赏
  • 举报
回复
引用 楼主 ahaso 的回复:
求教,如果程序发生anr,还会有log产生么。 在activity启动过程中就发生anr,但是连oncreat里的log都没有。。。请大牛指点
anr日志一般情况下好像是在data/anr/traces.txt 至于没有执行onCreate方法,你自己也可以去截取adb log查看的
顾小林 2013-04-15
  • 打赏
  • 举报
回复
trace.* 路径 记不住了
顾小林 2013-04-15
  • 打赏
  • 举报
回复
anr也有log的 首先adblog 会提示你 哪里产生了anr 在data/data/trace.*文件 里面就是anr log
ahaso 2013-04-15
  • 打赏
  • 举报
回复
引用 9 楼 haoyizsw 的回复:
一步一步调试 ,把你自定义的先屏蔽实时,然后在屏蔽线程试试
主要问题是这是一个很小概率的事件,40台机器进行了100次操作有2台机器各出现一次。。。所以比较纠结找不到关键点,改动也不知道到底有么有在点子上,谢谢耐心看完
haoyizsw 2013-04-15
  • 打赏
  • 举报
回复
一步一步调试 ,把你自定义的先屏蔽实时,然后在屏蔽线程试试
ahaso 2013-04-15
  • 打赏
  • 举报
回复
这个activity是收到一个intent启动的,出现anr的情况时直接黑屏 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.paint); Calendar ca = Calendar.getInstance(); mGetTime = ca.getTimeInMillis(); paletteView = (PaletteView)findViewById(R.id.backview); bluepenButton = (Button)findViewById(R.id.bluepen); eraserButton = (Button)findViewById(R.id.eraserButton); submitButton = (Button)findViewById(R.id.submitButton); saveButton = (Button)findViewById(R.id.saveButton); bluepenButton.setOnClickListener(this); eraserButton.setOnClickListener(this); submitButton.setOnClickListener(this); saveButton.setOnClickListener(this); Bundle bundle = getIntent().getExtras(); token = bundle.getString("token"); readPath = bundle.getString("parameter"); subject = bundle.getString("subject"); mHttpPort = bundle.getInt("httpport"); Intent intent = new Intent(); intent.setAction("close.bynextQuiz"); sendBroadcast(intent); loadDialog = new ProgressDialog(this); saveDialog = new ProgressDialog(this); overtimeDialog = new AlertDialog.Builder(this).create(); overtimeDialog.setCancelable(false); loadDialog.setCancelable(false); saveDialog.setCancelable(false); msg = new Message(); resetActivity(); } public void resetActivity(){ if( subject == null || subject.equals("") ){ subject = "Miscellaneous"; } loadDialog.show(); loadDialog.setContentView(R.layout.loadpaintdialog); bluepenButton.setSelected(true); eraserButton.setSelected(false); thread = new Mythread(); thread.start(); } 这是oncreat里的内容,在最开始添加log也没有任何输出。下面是oncreat里自定义view的内容: public PaletteView(Context context, AttributeSet arr) { super(context, arr); mPaint = new Paint(); actionList = new ArrayList<Action>(); mSurfaceHolder = this.getHolder(); mSurfaceHolder.addCallback(this); this.setFocusable(true); mLoop = true; finbgBitmap = ((BitmapDrawable) (getResources() .getDrawable(R.drawable.white))).getBitmap(); newbit = Bitmap.createBitmap(bgBitmapWidth, bgBitmapHeight, Config.ARGB_4444); myThread = new Thread(this); myThread.start(); }
ahaso 2013-04-15
  • 打赏
  • 举报
回复
引用 5 楼 wenwei19861106 的回复:
ANR只能说明主线程阻塞 如果子线程打印LOG无影响
我的程序是启动一个画图程序,因为是自定义了一个view继承了SurfaceView,然后creat中自定义view中的creat里的log也没有打印,activity中creat的log也没有打印,会发生这样的情况么。 自定义view里会跑一个线程
ahaso 2013-04-15
  • 打赏
  • 举报
回复
引用 2 楼 shen332401890 的回复:
anr也有log的 首先adblog 会提示你 哪里产生了anr 在data/data/trace.*文件 里面就是anr log
我有找到这个路径,也查看了里面的内容,但是没找到里面有自己程序进程的内容。。。所以很头疼啊
南瓜饼 2013-04-15
  • 打赏
  • 举报
回复
ANR只能说明主线程阻塞 如果子线程打印LOG无影响
weidong0210 2013-04-14
  • 打赏
  • 举报
回复
上代码 后再分析

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧