1、请求后台数据的过程中,我们一般要用到Dialog,刚打开页面的时候,我们一般会先去请求网络加载数据,如果打开页面后,在Dialog显示前,立即点击返回,就会报错:
[Unable to add window — token android.os.BinderProxy@42824 is not valid; is your activity running?]
这句话意思是当Dialog显示的时候,Dialog所依附的Activity销毁了,所以就报错。
解决方式:
if(!((Activity) context).isFinishing())
{
//show dialog
}
2、如果页面中含有Spinner控件的时候,当页面刚OnCeate的时候Spinner会相应默认选中的item。
3、EventBus采坑
问题:EventBus消息接收时,能接收消息,但是无法更新ui
现象:我的逻辑是第一个页面跳转到第二个页面,然后再第二个页面发送消息,第一个页面接收消息然后更新ui。
解决:第二个页面发送完消息之后,直接finish()掉,而不是重新打开第一个页面。
4、gradle版本踩坑
问题:当导入github上或者别人写的Demo时,由于别人用的AS比自己的AS高,所以会让你提示升级:
This Gradle plugin requires a newer IDE able to request IDE model level 3
或者是:This Gradle plugin requires Studio 3.0 minimum
解决方式:1、升级AS
2、在gradle.properties中加入以下这句:重新编译即可。
android.injected.build.model.only.versioned = 3
5、问题:Failed to open zip file
解决方式:https://jingyan.baidu.com/article/48b37f8ddbcbbe1a64648832.html
重新下载导入项目中的gradle版本(压缩包),然后放到电脑中的对应gradle目录下。
gradle下载地址:http://services.gradle.org/distributions/
gradle目录地址:C:\Users\lenovo.gradle\wrapper\dists
6、问题是:
Error:Execution failed for task ':app:mergeDebugResources'.>
Error: java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
解决方式是:
在工程根目录下新建gradle.properties文件 加入
android.enableAapt2=false
即可解决。
7、获取apk的SHA1值:
先切换到jdk的bin目录下:
然后输入
keytool -list -v -keystore 完整路径下的\正式签名.keystore
8、如果项目依赖的项目太多,导致引入的jar包版本号冲突,可以这样解决:
在主项目的build.gradle里面:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.0'
}
}
}
}
9、编译失败:Android studio Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2).
网上好多说是去掉项目根目录的build.gradle中的allprojects{...}里面写上google() ,但是试验的不管用,原来是jcenter()和google()写反了,换一下就好啦。正确的写法是:
repositories {
google()
jcenter()
mavenCentral()
}