微博返回:
{"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
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