xml文件出现找不到相应类
例如ViewPager类找不到,应该检查类名单词拼写是否错误,是否写错包名以及是否导入jar包并勾选
xml文件布局merge标签
DEXpathlist错误
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()函数的唯一区别就是当发生状态丢失的时候,后者不会抛出一个异常
eventBus和android-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重建的原因
视图本身内部状态变化引起重绘;
view树内部添加或者删除子view;
View本身的大小及可见性发生变化。
MVC和MVP模式的区别和详解以及在Android开发中对MVP模式的应用实践
Android项目反编译得到java源码步骤
- 下载apk文件,修改文件格式为zip并解压得到classes.dex文件
- 利用dex2jar软件将classes.dex文件转化为classes_dex2jar.jar文件
- 下载 xjad或者jd-gui软件将该jar文件反编译为java文件并保存
利用apktool反编译得到所有资源文件
Android APK大小压缩方法
常见bug注意事项
- 网络请求以及文件存取 时务必记得加入permission权限!!!
- Mainapplication 为了防止为空对象,务必记得在manifest里面进行全局初始化
- 使用Gson解析json数据 一定要保持json数据的key和要转换的对应类的成员变量名一致
- fragment切换不用replace的switch方法
- xml文件设置background时图片分辨率过大会导致设置无效
- Activity无法开启需要查看manifest是否注册该Activity
- Android Development Toolkit版本低于SDK版本时会导致adb无法启动,建议更新ADT到最新版本