Android开发常见bug解决方法及注意事项

xml文件出现找不到相应类

例如ViewPager类找不到,应该检查类名单词拼写是否错误,是否写错包名以及是否导入jar包并勾选

xml文件布局merge标签

标签能百分百代替这个布局组件, 对于不复杂的其他布局组件如线性布局等组合组件中,可以在继承子类中对其属性进行设置后也可以使用标 签,标签不占资源,自然在生成界面时也不会生成对应的组件。另外需要注意一点是只能作为根元素,对 于需要用inflate生成布局文件时,必须指定一个ViewGroup作为其父元素,并且要设置inflate的attachToRoot参数为 true

DEXpathlist错误

往往是因为重复导入jar或者第三方依赖包

Fragment使用注意事项

Fragment尽量使用support-v4包中以便于低版本兼容,可以兼容到1.6版本;同时需要使用getSupportFragmentManager(),Activity需要继承FragmentActivity;Fragment,FragmentManager,FragmentTransaction都要用v4包

大部分的应用仅仅在onCreate()方法被调用的开始时间提交transactions,或者在相应用户输入的时候,因此将不可能碰到任何问题;避免在异步回调函数中提交transactions。包括常用的方法,比如AsyncTask的onPostExecute方法和LoaderManager.LoaderCallbacks的onLoadFinished方法;如果你的应用要求在除onCreate()函数之外的其他Activity生命周期函数中提交transaction,你可以在FragmentActivity的onResumeFragments()函数或者Activity的onPostResume()函数中提交。这两个函数确保在Activity恢复到原始状态之后才会被调用,从而避免了状态丢失的可能性。使用commitAllowingStateLoss()函数。commit()函数和commitAllowingStateLoss()函数的唯一区别就是当发生状态丢失的时候,后者不会抛出一个异常

eventBusandroid-priority-jobqueue搭配使用的优势

对于每一个新的backgroundJob都新建一个继承job类的类,然后在内部重载函数中实现业务逻辑,JobManager类会对所有的job进行管理(注意对job和manager的configuration);同样地,对每一个的job的执行结果可以相对应一个event,post到eventBus中进行管理,需要相应event的activity自行进行event订阅。

Android view的layout参数

android View的layout函数四个参数是指该view控件距离其父view的距离,以左上角为坐标原点计算;setMargins函数与具体xml设置有关,Grivaty等属性会导致margin设置无效

关于layout_margin

大量网络资料上都说,layout_margin指view距离父view的距离。这个说法不够严谨,正确的说法是, 距离 view的相对view的距离 才更准确。

在Linearlayout下,可以认为是距离父view的距离。但在RelativeLayout下则不然,如果view A已经写定在view B的右侧,则view A的layout_marginLeft就是距离view B的距离,与父View无关。另外,这个距离究竟是两个view中心的距离还是相邻两边的距离?可以这样理解,每个view都是一个矩形区域,如果view A已经设定在view B的右侧, 则layout_marginLeft是view B的右边 和view A的左边之间的距离,而非两个view中心之间的距离!

三个导致View重建的原因

  1. 视图本身内部状态变化引起重绘;

  2. view树内部添加或者删除子view;

  3. View本身的大小及可见性发生变化。

MVC和MVP模式的区别和详解以及在Android开发中对MVP模式的应用实践

参考链接1
参考链接2
参考链接3

Android项目反编译得到java源码步骤

  1. 下载apk文件,修改文件格式为zip并解压得到classes.dex文件
  2. 利用dex2jar软件将classes.dex文件转化为classes_dex2jar.jar文件
  3. 下载 xjad或者jd-gui软件将该jar文件反编译为java文件并保存
  4. 利用apktool反编译得到所有资源文件

    最新工具Androidfby

Android APK大小压缩方法

参考链接1
参考链接2

常见bug注意事项

  1. 网络请求以及文件存取 时务必记得加入permission权限!!!
  2. Mainapplication 为了防止为空对象,务必记得在manifest里面进行全局初始化
  3. 使用Gson解析json数据 一定要保持json数据的key和要转换的对应类的成员变量名一致
  4. fragment切换不用replace的switch方法
  5. xml文件设置background时图片分辨率过大会导致设置无效
  6. Activity无法开启需要查看manifest是否注册该Activity
  7. Android Development Toolkit版本低于SDK版本时会导致adb无法启动,建议更新ADT到最新版本