Android开发中那些需要注意的坑
这个是看知乎的时候发现的一个问题,感觉挺有意思,就将自己遇到的坑记录下来。
1、AndoridLthemecolorPrimary不能使用带有alpha的颜色值,否则会有异常抛出,直接判断了是否alpha是否等于0或者255,其他都会异常
@Override
protectedvoidonApplyThemeResource(Resources.Themetheme,intresid,
booleanfirst){
if(mParent==null){
super.onApplyThemeResource(theme,resid,first);
}else{
try{
theme.setTo(mParent.getTheme());
}catch(Exceptione){
//Empty
}
theme.applyStyle(resid,false);
}
//GettheprimarycolorandupdatetheTaskDescriptionforthisactivity
if(theme!=null){
TypedArraya=theme.obtainStyledAttributes(com.android.internal.R.styleable.Theme);
intcolorPrimary=a.getColor(com.android.internal.R.styleable.Theme_colorPrimary,0);
a.recycle();
if(colorPrimary!=0){
ActivityManager.TaskDescriptionv=newActivityManager.TaskDescription(null,null,
colorPrimary);
setTaskDescription(v);
}
}
}
/**
*CreatestheTaskDescriptiontothespecifiedvalues.
*
*@paramlabelAlabelanddescriptionofthecurrentstateofthistask.
*@paramiconAniconthatrepresentsthecurrentstateofthistask.
*@paramcolorPrimaryAcolortooverridethetheme'sprimarycolor.Thiscolormustbeopaque.
*/
publicTaskDescription(Stringlabel,Bitmapicon,intcolorPrimary){
if((colorPrimary!=0)&&(Color.alpha(colorPrimary)!=255)){
thrownewRuntimeException("ATaskDescription'sprimarycolorshouldbeopaque");
}
mLabel=label;
mIcon=icon;
mColorPrimary=colorPrimary;
}
2、android5.0花屏,由于过度绘制导致,关闭硬件加速,尤其是使用webview后,可能会有大概率出现。
3、华为手机被KILL一系列问题
用户可以设置某个应用是否后台保护,按照华为的功能说明,理解为,如果不保护,那锁屏后程序将无法保持运行,也就是进程可能被KILL
新安装应用后,华为会给出选项,是否保持,这个默认选项上存在问题,有的应用默认不允许,有的应用默认就允许。
关于耗电高被KILL问题。
关于锁屏后网络被切断问题。锁屏就算保护,而网络或者SOCKET也可能被主动切断。
华为自己给出了BASTET系统解决方案,具体不展开。
4、相同颜色值在全局是同一份,如果对其改变获取后的colorDrawable值,会导致其它所有使用的地方都改变,可以采用mutable避免。这个其实不能算作坑,是自己代码没有看仔细。
5、华为p8手机,如果service与ui不在同一进程,service中监控网络的BroadcastReciver会收不到网络连接的广播,但是能收到断开的广播,这个应该也是华为自己的优化,但是ui中的连接与断开都能收到广播。
6:Android在4.4后更新了webview内核,在5.0前在webview中,不用的域可以读取其它域设置的cookie,但是在5.0开始,系统默认值改为了false。这样会导致之前以前采用旧方法的不能获取到。(其实在我看来,确实不应该跨域来读取cookie,多不安全)
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView,true);
}
以上就是本文的全部内容,希望对大家的学习有所帮助。