• WakeLock 可以用来唤醒屏幕和CPU,用来做重要事情的通知。微信天天晚上还响个不停是不是就是这种情况?建议是只在真正需要的时候用。影响电池使用,增加耗电。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeLock");

wl.acquire(10000);

wl.release();  

说到耗电,关于老外和国人还有一个梗: 记得最早看到mobile web的时候,google有个研究是研究什么技术在什么网络下比较耗电。国内么,后台进程杀都杀不完,某app晚上经常唤醒手机导致屏幕一闪一闪,某狐app在背后默默的10分钟内用掉了30M的流量, 估计一直在唤醒网络吧。

  • Parcelable, Bundle

Parcelable表示是一个对象能够包装到Parcel里的一个interface,而Parcel是包裹的意思,这个包裹是用来做IPC通信时传递讯息的,而不是用来储存的。大家收到快递后都会把包裹拆了而不是直接就放到自家的收藏柜里了吧。在官方文档里面也有明确的说明, Parcel不是一个通用的序列化机制,而是为了搞笑的IPC通信传输。

所以如果是为了持久化和网络传输,应该实现Serializable,而只有是为进程之间,程序之间进行通信的时候才实现Parcelable。

而Bundle则是Parcelable的一个实现,可以想象成对包裹的标记管理,很多包裹的情况下会给包裹标记上String标签,这样打包的人和收包裹的人就知道如何去放置/读取包裹。

  • ConnectivityManager