• PD如果经常要求改入口,使用Adapter + ViewHolder来实现解耦:
    • 这两个配合模拟FragmentManager + Fragment的逻辑
    • Adapter只负责管理View、对ViewHolder中的生命周期函数进行回调
    • ViewHolder不仅保存View的引用,还完整包含与该View有关的所有逻辑,对外暴露相同的生命周期回调函数,例如onViewCreated、onBindView等
    • 调整入口仅仅需要在Activity中调整Adapter的Data
    • 切记要将ViewHolder与View绑定,如果不绑定就不要复用之前的View,否则空指针
  • Json是弱类型,子类Json串填充父类对象将会出现Member丢失的情况
  • getSystemService获得Inflater的时候,一定要用Activity的Context,不能用Application Context
  • ListView跳转到item的某个位置,需要用setSelectoinFromTop,不能setSelection再scroll。ListView直接scroll会导致跳动和空白item
  • ListView中传递的所有关于Position的数据都是包括Header、Footer的,算数要小心
  • 在Inflate时,一定要传入parent参数,否则一些依赖父节点的layout参数是不能解析的,详见:这里
  • LaunchMode以及ApplicationContext+ActivityContext引发的Task栈混乱问题
  • Android/Linux系统是不保存文件创建时间的,如果想拿到文件创建时间,需要用比较tricky的办法。文件名由两部分组成:原始文件名+分隔符+创建时间(1970毫秒).扩展名。原始文件名开头比较容易写Filter
  • 反射在Android上真的很慢,ormlite比直接使用sql要慢一倍!
  • Activity.runOnUiThread()使用的Handler虽然是Activity的成员变量,其对应的Looper却是Looper.myLooper()。所有runOnUiThread的Runnable即使Activity已经被finish仍然会被执行
  • SqliteDatabase.beginTransaction一定要setTransactionSuccessful,否则所有的操作都会取消!!!
  • 基本所有使用回调的地方都可以通过KVO来实现,而且直接使用LocalBroadcast能够避免很多内存泄露啊、监听器管理之类的麻烦。
  • 应对软键盘遮挡的问题,可以处理四个不同的事件,事件和调用顺序如下:
    1. onSizeChanged(Activity需要是AdjustResize的)
    2. onLayout(不用监听onMeasure,回调的位置太多了)
    3. addOnLayoutChangeListener监听layout的回调事件
    4. getViewTreeObserver().addOnGlobalLayoutListener监听全局的layout事件
  • 据说在App被卸载/停止的时候,jni里fork出来的子线程是不会被停止的。这样就可以干很多流氓的事情了,比如保活之类的
  • 有一个很赞的hook,LayoutInflater.Factory提供在原生View的xml里增加新的attribute。例子
  • 关于软键盘的问题:

    • 调起来讲,((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
      showSoftInput(view, 0);
      tag为0是默认,SHOW_FORCED在某些rom上会要求用户主动点back才能收起键盘,使用任何一种代码上的hide都不生效,压后台也不生效。理论上是tag越大,show的动作越强

    • 收起来讲,((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
      hideSoftInputFromWindow(editText.getWindowToken(), 0);
      tag为0是默认的,最强的是HIDE_NOT_ALWAYS,却仍然不能hide用SHOW_FORCED调起的键盘

  • Activity上的Theme之类的都是给Window的DecorView设置的,生效的面积大于Activity的面积(在键盘动画的情况下)

  • 设计的时候,各种码、状态类型要统一,尽量使用int,打印也别非转换一下。码类型转换、字符串拼接这种非常耗内存也会增加apk大小

更多相关文章

  1. Android(安卓)lbs位置服务
  2. 非常好看的android音量旋钮
  3. RXJava
  4. 黑马程序员12——android之事件传播机制
  5. android appwidget 笔记
  6. Android滑动事件冲突解决 Touch事件处理机制
  7. Android-ListView中嵌套(ListView)控件时item的点击事件不起作用
  8. Android(安卓)recyclerView items的侧滑删除以及点击事件处理
  9. FrameLayout和RelativLayou上面覆盖View和下方View都响应点击事

随机推荐

  1. 本例为模仿微信聊天界面UI设计,文字发送以
  2. Android工程的编译过程
  3. Android(安卓)Studio 3.0 新功能全面解析
  4. android与javascript交互调用
  5. Android高手进阶教程(一)-------Android
  6. iOS 和 Android(安卓)哪个更利于赚钱?
  7. Android实战技巧之四十四:Hello,Native!
  8. 环球旅讯 Android使用报道
  9. Android的 学习资料分享
  10. android定时关机