android 遇到的细节 FAQ

来源:互联网 发布:qq刷访客软件 编辑:程序博客网 时间:2024/06/05 23:52

改成倒序:

12、android studio

引用的包用重复:

Duplicate files copied in APK META-INF/LICENSE.txt

解决:

按提示的

build.gradle加入

?
1
2
3
4
5
6
7
8
android 
{
    packagingOptions {
        exclude 
'META-INF/LICENSE.txt'
 
    }
}
我的studio不够要:

packagingOptions{  

exclude'META-INF/DEPENDENCIES'  

exclude'META-INF/NOTICE'  

exclude'META-INF/LICENSE'  

exclude'META-INF/LICENSE.txt'  

exclude'META-INF/NOTICE.txt'  

}


jdk找不到红一片

String提示:

incompatible types required java.lang.String found java.lang.String

解决:close project 和重启studio都没用。
最后:
File > Invalidate Caches & Restart
参考:http://stackoverflow.com/questions/26572331/android-studio-incompatible-types-required-java-lang-string-found-java-lang-stri
意思就是studio意外退出然后要清除下缓存

感觉:

File > Invalidate Caches & Restart 这个还是比较牛


11、android:focusable="true" 与 android:focusableInTouchMode="true"

焦点的处理,mobile app 用的不多,tv app 用的很多,TextView ImageView都要用

其中android:focusable="true"就是可以获取焦点很好理解

android:focusableInTouchMode="true" 是指可以通过触摸获取焦点,tv是通过按钮获取焦点的。 如果没有设置这个属性据说tv app会出现遥控可一获取焦点,而插了鼠标后不能获取焦点


10、关于service的一个有趣问题

情景:监听到开机广播,启动心跳服务。心跳服务启动不管写在开机广播里Start还是在Application里都启动不了,不知道问题出在哪里。而且很乌龙,我打的包可以,队友打的包就是不行

解决:用命令行logcat  | grep 服务名  发现 Unable to start service Intent { cmp=.../...}: U=0 not found

看到这个log 但是还是找不到问题,谷歌了好久这个log,10有8,9是Mainfest文件里对应的service的声明不对,比如用了相对包名之类的。问题就是我可以确定自己的声明是对的。查了一天也查不出问题。

后来考虑到:自己能确定xml声明没问题,但是无法确定别人打的包可以排除这个问题。把包反编译开,果然是这个问题。在xml里队友的声明不知道怎么多了个字母

总结:主要是记录下在命令行里直接logcat 标签,得到结果。另外记录下 unable to start service Intent 的错误

注意:5.0以上的系统,服务必须显示的启动,通过act启动还是不对的


PS:Mainfest.xml 文件中对 service的属性 android:exported="true" 设置后才可以跨进程访问


1、ListView 设置addHead 在3.0与之前版本若在:setAdapter之后添加,运行报错。4.0以后不报错


2、ListView  Adapter    getView函数忘记返回view,返回null 报addview错误


3、listView里添加header 在3.0以前的版本在setAdapter后addHead 就会出错。4.0以后可以


4、服务不会被意外关闭


5、edit 设置输入类型会造成 只显示一行


6、如果需要接口需要调用手机当前时间的,要用服务器时间。通过计算时间差来计算服务器当前时间。不用本地时间(本地时间可能没有设置,可以差几年)


7、android 调用系统相机,OK按键  点击无效
原因:调用系统相机时把路径闯过去获取图片,路径是不存在的(被其他模块释放了,判断存在生成一次)


8、设置已经存在的 LayoutParams 属性(设置长宽)
如果直接设置有可能报错(以前设置过),需要获取后,改属性再设置
LayoutParams params = (LayoutParams) mViewPager.getLayoutParams();
params.height = 320;
mViewPager.setLayoutParams(params);


9、通知传送intent获取extraData数据错误
后面用getIntent的话,得到的intent是第一次启动这个activity的intent
会照成所有的getIntent数据内容一样
加一句:NoticeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

0 0
原创粉丝点击