学android看啥书
2019-01-23 16:20:24 z979451341 阅读数 674

ANR也算是比较常见的情况,虽然我们大多数可以把锅甩给用户的手机,但是有时候也有甩不动锅的时候

 

这篇博客的主题是教大家如何看ANR日志,然后就是分析ANR日志

一.预备工作

1.配置环境

配置环境,如果已经配置过的就跳过,在PC的在系统变量中path变量后面添加adb.exe的路径,我的路径是D:\Android\sdk\platform-tools 
添加完之后用PC的cmd命令行窗口或者打开Android studio,在terminal窗口输入adb,会出现adb的版本号

2.获取ANR日志

当手机出现ANR,就会在data/anr/traces.txt里添加相关记录。
在AS的 terminal 下通过adb命令拿到该文件:adb pull /data/anr/traces.txt  ,然后我们在项目的根目录下就可以看到了


二.分析日志

1.触摸事件ANR

首先我运行一个会产生ANR的代码,一看就知道这个属于触摸事件ANR

        btn_one.setOnTouchListener { v, event ->
            Thread.sleep(1000000)
            false
        }

因为一个日志文件包含了所有应用的ANR信息,所以我们要去找哪一个是我们想看的,因为最新的ANR会在最上面,所以也好找

注意这一句,它有我们的包名,所以可以断定这是我们想看的ANR信息

Cmd line: appupdate.bitpai.com.test

继续往下看,堆内存信息 22%空闲,这个应用堆内存总共分配了12MB

Heap: 22% free, 10MB/12MB; 40193 objects

然后我们往下翻,查看线程的信息,直到我们看见了下面这个,main指的是主线程,prio线程优先级,tid线程锁ID,sleeping指的是线程在休眠,因为我执行了sleep方法, ”

"main" prio=5 tid=1 Sleeping

不过还没完,下面的信息有一句提到了我写的代码,这个24指的是我那句sleep命令的位置

at appupdate.bitpai.com.test.MainActivity$onCreate$1.onTouch(MainActivity.kt:24)

虽然有点长,但是还是放出来一段,因为他说了我堵塞了那些代码的执行,因为onTouch是在dispatchTouchEvent里执行的,所以,有这一段是应该的

 at java.lang.Thread.sleep(Thread.java:327)
  at appupdate.bitpai.com.test.MainActivity$onCreate$1.onTouch(MainActivity.kt:24)
  at android.view.View.dispatchTouchEvent(View.java:11784)
  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2974)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2604)
  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2974)

关于触摸事件ANR主要判断在于是否有相关 分发函数 在其中被卡住

2.Service onStartCommand执行超时

我启动一个service,因为无线循环的原因,会产生ANR

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        int i=0;
        boolean tag=true;
        for(;tag;){
            i=i+1;
        }
        return super.onStartCommand(intent, flags, startId);
    }

看一下日志,主线程运行中,但是因为在onstart里执行半天都没结束,所以报ANR了

"main" prio=5 tid=1 Runnable
  | group="main" sCount=0 dsCount=0 flags=0 obj=0x7302fa20 self=0x7f17ea3a00
  | sysTid=10854 nice=-10 cgrp=default sched=0/0 handle=0x7f1cd649b0
  | state=R schedstat=( 10991954159 32071357 850 ) utm=1088 stm=11 core=6 HZ=100
  | stack=0x7fc2b17000-0x7fc2b19000 stackSize=8MB
  | held mutexes= "mutator lock"(shared held)
  at appupdate.bitpai.com.test.MyService.onStartCommand(MyService.java:20)
  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4151)

 

3.小结

虽然上面的两个例子通过 日志很快就可以知道 问题所在,但是具体到我们平常的ANR发生情况里,还是算比较简单的了。需要仔细盘查和大胆猜测

 

参考文章

https://juejin.im/post/5be698d4e51d452acb74ea4c

https://blog.csdn.net/king_jie0210/article/details/73793991

 

 

2013-08-28 18:24:00 jizhuzhong 阅读数 648

 刚刚开始新的学习生活时,很容易走错方向,然后,这意味着不知道该学习什么,不知道该怎样学习,很显然,我写下这句话意味着我走过这样的路,为此,就付出了不小的代价,浪费了很多时间。

      这篇文章当然不是回忆那些走错了的路,而是写下我学习Android的历程,当然,可能不一定适合每一个人,但是,个人认为这条路还算走的通。

      首先,移动开发现在是很火的方向,做这方面的人很多,如果,你也想学这个方向,那么你必须要培养起兴趣,学习不是被迫的,完全靠的是自觉。我非常喜欢一句话:每天叫醒我的不是闹钟,而是梦想。不过,很遗憾,我离那个境界还是很远,不过,个人始终在努力着。。。

      好了,不说题外话了,下面进入正题

      大家都知道,Android应用程序的开发用的是Java语言,所以,首先,你要学会的是使用Java语言,这并不意味着你需要把那门语言掌握的很好。举个例子吧,我在大学时接触过Java两个月左右,之后就放弃了,没在那上面花时间。不过,还好,我学习过C++,由于语言都是想通的,所以,在Android开发中再去学习Java也是可行之路。


1.视频教材

      初学Android,建议不要去看一些类似于Android开发之类的书,因为你在不懂的时候看书会很慢,而且很难把知识串到一起,这样可能是事倍功半,我们可以选择的是看一些视频教材,下面这张截图正是我开始学习的时候选择的学习视频:


这里是视频下载的地址:http://www.marschen.com/portal.php

      个人认为里面的内容很好,讲的浅显易懂,非常适合初学者培养兴趣,学习Android基础。如果时间充裕,建议把里面的视频资料都看一看,目的不是记住每一个部分,而是拓宽知识面。


2.《Learning Android》


     这应该算作是我看的第一本Android书,这本书很薄(个人感觉,学习一个新的东西,不要找一本很厚的书,可能它里面的内容很丰富,但是可能会让你慢慢失去耐心,因为要看的东西太多了。。。),很适合作为了解Android这个“新生事物”,这本书的内容不是很难,即使是没接触过Android的朋友也能知道个大概这本书在讲什么,还有,数据库这方面这本书的篇幅不是很多,所以,需要一定的数据库只是显得有点重要,当然,如果看不懂可以直接略过,因为,后面其他的书有很详细的讲解。


3.《Android开发应用实战详解》???


      为什么我在这本书的名字后面加了几个问号呢?

      因为,这类书大致内容都是一样的,都是一个套路写下来的,没有什么太大的不同,所以,只需要找一本这一类的书就行了。它们的逻辑大致都是一样的:

      1.开发环境的配置

      2.控件的介绍和使用方法,还会介绍非常多的控件属性,当然,大部分是很少用的

      3.界面布局的介绍,这是很重要的一部分,是开发Android应用程序的基础,需要好好的看看

      4.数据库基础,里面讲解的内容是Android开发能用到的SqLite数据库相关的知识

      5.地图开发,这一部分根据自己的需要看吧,用处不是很大

      这大概就是这类书的一个流程,大家可以根据自己的喜好找一本类似的书学习下Android的基础知识,为以后开发应用打下基础。


4.《Google Android SDK开发范例大全》


      当掌握了一定的基础知识之后,不妨去看看这本书,这本书几乎不讲解各个部分的内容,它是范例的集合,里面包含了一系列Android小程序范例,由于当时我还处于假期,所以,时间还算充裕,几乎把这本书的每一个小例子都给实现了一遍,对于理解Android开发流程,学习开发知识很有帮助,是学习Android程序开发的一本好书。


5.《Android开发网络实战详解》???


      没错,这本书的后面又是几个问号,同样是上面提到的那个话题,因为这样书都是类似的,内容将的大部分都是一样的,流程我就不写了,大家想学习网络开发的可以找本书看看。


5.《Android开发精要》


      这本书要好好的推荐下,因为,这样的好书不多。

      首先,看这本书之前,你需要掌握Android开发的基础知识,这里所讲的掌握并不是了解,因为这本书讲的比较深入,没有一定的知识储备,不一定能看得懂其中的内容。

     在这本书里,你会看到其他书中没有涉及的好多东西,比如,Android程序的入口点,详细分析Activity和Service的声明周期,数据库用到的数据结构等等内容,这在其他的书中很少涉及(至少在我看过的书中很少),所以,想了解Android应用更深一点的内容,看看这本书绝对是个不错的选择。


      当读了好多书之后,个人也做过一些应用程序的开发,比如播放器,通讯录之类的简单APP。当觉得这些东西对我的吸引力没有以前那么大时,我想到的是看些Android底层的架构,于是,我又找了本书,这本书的名字就不在说了,因为,我并没有坚持读下去,一方面是时间不够,另一方面是自己的知识储备太少,看这种书太吃力,所以,放弃了这个想法。

      现在,我很少再去接触Android程序的开发,那些书也很少再去读了,不过,我并没有丢掉Android的学习,有时间还是会去翻一翻那些看过的东西。

     

     这里,推荐个学习Android的网站:http://www.eoeandroid.com/forum.php


   这篇文章写了好长时间了,不过,并没有完全写下我的Android学习历程,因为,还有很长的路要走。。。

2018-11-11 00:55:23 yffhhffv 阅读数 121

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

               刚刚开始新的学习生活时,很容易走错方向,然后,这意味着不知道该学习什么,不知道该怎样学习,很显然,我写下这句话意味着我走过这样的路,为此,就付出了不小的代价,浪费了很多时间。

      这篇文章当然不是回忆那些走错了的路,而是写下我学习Android的历程,当然,可能不一定适合每一个人,但是,个人认为这条路还算走的通。

      首先,移动开发现在是很火的方向,做这方面的人很多,如果,你也想学这个方向,那么你必须要培养起兴趣,学习不是被迫的,完全靠的是自觉。我非常喜欢一句话:每天叫醒我的不是闹钟,而是梦想。不过,很遗憾,我离那个境界还是很远,不过,个人始终在努力着。。。

      好了,不说题外话了,下面进入正题

      大家都知道,Android应用程序的开发用的是Java语言,所以,首先,你要学会的是使用Java语言,这并不意味着你需要把那门语言掌握的很好。举个例子吧,我在大学时接触过Java两个月左右,之后就放弃了,没在那上面花时间。不过,还好,我学习过C++,由于语言都是想通的,所以,在Android开发中再去学习Java也是可行之路。


1.视频教材

      初学Android,建议不要去看一些类似于Android开发之类的书,因为你在不懂的时候看书会很慢,而且很难把知识串到一起,这样可能是事倍功半,我们可以选择的是看一些视频教材,下面这张截图正是我开始学习的时候选择的学习视频:


这里是视频下载的地址:http://www.marschen.com/portal.php

      个人认为里面的内容很好,讲的浅显易懂,非常适合初学者培养兴趣,学习Android基础。如果时间充裕,建议把里面的视频资料都看一看,目的不是记住每一个部分,而是拓宽知识面。


2.《Learning Android》


     这应该算作是我看的第一本Android书,这本书很薄(个人感觉,学习一个新的东西,不要找一本很厚的书,可能它里面的内容很丰富,但是可能会让你慢慢失去耐心,因为要看的东西太多了。。。),很适合作为了解Android这个“新生事物”,这本书的内容不是很难,即使是没接触过Android的朋友也能知道个大概这本书在讲什么,还有,数据库这方面这本书的篇幅不是很多,所以,需要一定的数据库只是显得有点重要,当然,如果看不懂可以直接略过,因为,后面其他的书有很详细的讲解。


3.《Android开发应用实战详解》???


      为什么我在这本书的名字后面加了几个问号呢?

      因为,这类书大致内容都是一样的,都是一个套路写下来的,没有什么太大的不同,所以,只需要找一本这一类的书就行了。它们的逻辑大致都是一样的:

      1.开发环境的配置

      2.控件的介绍和使用方法,还会介绍非常多的控件属性,当然,大部分是很少用的

      3.界面布局的介绍,这是很重要的一部分,是开发Android应用程序的基础,需要好好的看看

      4.数据库基础,里面讲解的内容是Android开发能用到的SqLite数据库相关的知识

      5.地图开发,这一部分根据自己的需要看吧,用处不是很大

      这大概就是这类书的一个流程,大家可以根据自己的喜好找一本类似的书学习下Android的基础知识,为以后开发应用打下基础。


4.《Google Android SDK开发范例大全》


      当掌握了一定的基础知识之后,不妨去看看这本书,这本书几乎不讲解各个部分的内容,它是范例的集合,里面包含了一系列Android小程序范例,由于当时我还处于假期,所以,时间还算充裕,几乎把这本书的每一个小例子都给实现了一遍,对于理解Android开发流程,学习开发知识很有帮助,是学习Android程序开发的一本好书。


5.《Android开发网络实战详解》???


      没错,这本书的后面又是几个问号,同样是上面提到的那个话题,因为这样书都是类似的,内容将的大部分都是一样的,流程我就不写了,大家想学习网络开发的可以找本书看看。


5.《Android开发精要》


      这本书要好好的推荐下,因为,这样的好书不多。

      首先,看这本书之前,你需要掌握Android开发的基础知识,这里所讲的掌握并不是了解,因为这本书讲的比较深入,没有一定的知识储备,不一定能看得懂其中的内容。

     在这本书里,你会看到其他书中没有涉及的好多东西,比如,Android程序的入口点,详细分析Activity和Service的声明周期,数据库用到的数据结构等等内容,这在其他的书中很少涉及(至少在我看过的书中很少),所以,想了解Android应用更深一点的内容,看看这本书绝对是个不错的选择。


      当读了好多书之后,个人也做过一些应用程序的开发,比如播放器,通讯录之类的简单APP。当觉得这些东西对我的吸引力没有以前那么大时,我想到的是看些Android底层的架构,于是,我又找了本书,这本书的名字就不在说了,因为,我并没有坚持读下去,一方面是时间不够,另一方面是自己的知识储备太少,看这种书太吃力,所以,放弃了这个想法。

      现在,我很少再去接触Android程序的开发,那些书也很少再去读了,不过,我并没有丢掉Android的学习,有时间还是会去翻一翻那些看过的东西。

     

     这里,推荐个学习Android的网站:http://www.eoeandroid.com/forum.php


   这篇文章写了好长时间了,不过,并没有完全写下我的Android学习历程,因为,还有很长的路要走。。。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
2019-04-21 14:00:29 qq_44939836 阅读数 23
               

               刚刚开始新的学习生活时,很容易走错方向,然后,这意味着不知道该学习什么,不知道该怎样学习,很显然,我写下这句话意味着我走过这样的路,为此,就付出了不小的代价,浪费了很多时间。

      这篇文章当然不是回忆那些走错了的路,而是写下我学习Android的历程,当然,可能不一定适合每一个人,但是,个人认为这条路还算走的通。

      首先,移动开发现在是很火的方向,做这方面的人很多,如果,你也想学这个方向,那么你必须要培养起兴趣,学习不是被迫的,完全靠的是自觉。我非常喜欢一句话:每天叫醒我的不是闹钟,而是梦想。不过,很遗憾,我离那个境界还是很远,不过,个人始终在努力着。。。

      好了,不说题外话了,下面进入正题

      大家都知道,Android应用程序的开发用的是Java语言,所以,首先,你要学会的是使用Java语言,这并不意味着你需要把那门语言掌握的很好。举个例子吧,我在大学时接触过Java两个月左右,之后就放弃了,没在那上面花时间。不过,还好,我学习过C++,由于语言都是想通的,所以,在Android开发中再去学习Java也是可行之路。


1.视频教材

      初学Android,建议不要去看一些类似于Android开发之类的书,因为你在不懂的时候看书会很慢,而且很难把知识串到一起,这样可能是事倍功半,我们可以选择的是看一些视频教材,下面这张截图正是我开始学习的时候选择的学习视频:


这里是视频下载的地址:http://www.marschen.com/portal.php

      个人认为里面的内容很好,讲的浅显易懂,非常适合初学者培养兴趣,学习Android基础。如果时间充裕,建议把里面的视频资料都看一看,目的不是记住每一个部分,而是拓宽知识面。


2.《Learning Android》


     这应该算作是我看的第一本Android书,这本书很薄(个人感觉,学习一个新的东西,不要找一本很厚的书,可能它里面的内容很丰富,但是可能会让你慢慢失去耐心,因为要看的东西太多了。。。),很适合作为了解Android这个“新生事物”,这本书的内容不是很难,即使是没接触过Android的朋友也能知道个大概这本书在讲什么,还有,数据库这方面这本书的篇幅不是很多,所以,需要一定的数据库只是显得有点重要,当然,如果看不懂可以直接略过,因为,后面其他的书有很详细的讲解。


3.《Android开发应用实战详解》???


      为什么我在这本书的名字后面加了几个问号呢?

      因为,这类书大致内容都是一样的,都是一个套路写下来的,没有什么太大的不同,所以,只需要找一本这一类的书就行了。它们的逻辑大致都是一样的:

      1.开发环境的配置

      2.控件的介绍和使用方法,还会介绍非常多的控件属性,当然,大部分是很少用的

      3.界面布局的介绍,这是很重要的一部分,是开发Android应用程序的基础,需要好好的看看

      4.数据库基础,里面讲解的内容是Android开发能用到的SqLite数据库相关的知识

      5.地图开发,这一部分根据自己的需要看吧,用处不是很大

      这大概就是这类书的一个流程,大家可以根据自己的喜好找一本类似的书学习下Android的基础知识,为以后开发应用打下基础。


4.《Google Android SDK开发范例大全》


      当掌握了一定的基础知识之后,不妨去看看这本书,这本书几乎不讲解各个部分的内容,它是范例的集合,里面包含了一系列Android小程序范例,由于当时我还处于假期,所以,时间还算充裕,几乎把这本书的每一个小例子都给实现了一遍,对于理解Android开发流程,学习开发知识很有帮助,是学习Android程序开发的一本好书。


5.《Android开发网络实战详解》???


      没错,这本书的后面又是几个问号,同样是上面提到的那个话题,因为这样书都是类似的,内容将的大部分都是一样的,流程我就不写了,大家想学习网络开发的可以找本书看看。


5.《Android开发精要》


      这本书要好好的推荐下,因为,这样的好书不多。

      首先,看这本书之前,你需要掌握Android开发的基础知识,这里所讲的掌握并不是了解,因为这本书讲的比较深入,没有一定的知识储备,不一定能看得懂其中的内容。

     在这本书里,你会看到其他书中没有涉及的好多东西,比如,Android程序的入口点,详细分析Activity和Service的声明周期,数据库用到的数据结构等等内容,这在其他的书中很少涉及(至少在我看过的书中很少),所以,想了解Android应用更深一点的内容,看看这本书绝对是个不错的选择。


      当读了好多书之后,个人也做过一些应用程序的开发,比如播放器,通讯录之类的简单APP。当觉得这些东西对我的吸引力没有以前那么大时,我想到的是看些Android底层的架构,于是,我又找了本书,这本书的名字就不在说了,因为,我并没有坚持读下去,一方面是时间不够,另一方面是自己的知识储备太少,看这种书太吃力,所以,放弃了这个想法。

      现在,我很少再去接触Android程序的开发,那些书也很少再去读了,不过,我并没有丢掉Android的学习,有时间还是会去翻一翻那些看过的东西。

     

     这里,推荐个学习Android的网站:http://www.eoeandroid.com/forum.php


   这篇文章写了好长时间了,不过,并没有完全写下我的Android学习历程,因为,还有很长的路要走。。。

           

为学Android,我看了这些书

博文 来自: qq_44919483
没有更多推荐了,返回首页