android经典地方

微博返回:

{"status":403,"error":"{\"error\":\"Insufficient app permissions!\",\"error_code\":10014,\"request\":\"\/2\/statuses\/upload_url_text.json\"}"}

借鉴定制协议


1. mplicit intent,Android默认给加上一个CATEGORY_DEFAULT,所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中加入android.intent.category.DEFAULT。


action--要求intent中的action必须能够过滤规则中的某一个相同   (mplicit intent必须设置action)

category--要求intent中的所有category都和过滤规则中的一个category相同

data--intent中的data和过滤规则中的data完全一样

所以说(action和category过滤规则基本上一样):

2.

Android横竖屏幕切换时注意4.0以上配置configChanges要加上screenSize,要不还会调用onCreate

<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize"/> 

3.

  ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于

   数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器,

  相应地ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。


每个ContentProvider据源发生改变后,如果想通知其监听对象, 例如ContentObserver时,必须在其对应方法 update / 

  insert / delete时,显示this.getContentReslover().notifychange(uri , null)方法,回调监听处理逻辑。否则,我们

  的ContentObserver是不会监听到数据发生改变的。 具体原理,大家可以参考老罗的这篇章:

                     Android应用程序组件Content Provider的共享数据更新通知机制分析 

注意:contentprovider的query,update,insert,delete四大方法是存在多线程并发访问的,注意同步问题。

结: 使用ContentObserver的情况主要有一下两者情况:

              1)需要频繁检测的数据库或者某个数据是否发生改变,如果使用线程去操作,很不经济而且很耗时 ;

              2)在用户不知晓的情况下对数据库做一些事件,比如:悄悄发送信息、拒绝接受短信黑名单等;


4. 速度  空间,界面优化

速度:因为ondraw方法可能会被频繁调用,ondraw中不要创建新的局部对象;不要做耗时任务; 缓存 ;

(速度优化核心思想是避免在主线程中耗时事操作,线程优化的核心思想是采用线程池,重用线程)

界面:include,merge,viewstub

空间:0)listview bitmap优化 1)只有当任务正在执行的时候才应该让Service运行起来。另外,当任务执行完之后去停止Service的时候,要小心Service停止失败导致内存泄漏的情况。2)OnTrimMemory是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。根据不同的内存状态,来响应不同的内存释放策略。监听TRIM_MEMORY_UI_HIDDEN这个级别,一旦触发了之后就说明用户已经离开了我们的程序,那么此时就可以进行资源释放操作了。


5.图片加载、缓存策略、列表的滑动流畅性。

Lru Least Recently Used 最近最少使用算法。


6. 坐标体系 left, x ,rawX, translationX , ScrollX


left =控件左上角在父容器中横坐标的像素值

x 是View左上角相对于父容器的坐标值

rawX--是View左上角相对于手机屏幕左上角。

translationX,存在平移过程,控件在x轴上偏移的像素值.默认值是0

ScrollX--scrollX是view的内容移动的距离,也就是说调用了view的scrollTo或scrollBy方法,view本身不会移动,只会移动view的内容。

             scrollX是相对于View中位置移动,内容在View中移动了,scrollX才会变,移动view不回引起ScrollX的改变  


7 scrollto和scrollby (方向向右/下为负,方向向左/上为正

相同的地方:移动的都是这个方法调用者View的内容,而不是移动view.

不同的地方:scrollTo()方法是让View的内容相对于初始的位置滚动某段距离,无论怎么样移动(scrollto或scrollby)多少次,View的初始位置是不变的.

而scrollBy()方法则是让view的内容相对于当前的位置滚动某段距离。ScrollX也是无论移动多少次,都是相对与初始位置的值(默认情况下scrollX  scrolly==0)



setTranslationX


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值