1、AndroidStudio运行项目提示:解析软件包错误

把图片中箭头所指的地方不勾选

[外链图片转存失败(img-dRAahIpe-1563245029386)(https://github.com/androidzhoufeng/image/blob/master/blog_image/instant_run.png?raw=true)]

2、使用ARouter报错:there’s no route matched the path

一般是不同的module使用了相同的一级路径。ARouter要求path必须有两级路径/app/xxx,第一级路径是Group的名称,在Arouter第一次寻找到route的时候便删除了这个一级路径的group,因为一级路径的重复,再调用另一个module的一级路径是”app”的路由时,由于之前Warehouse.groupsIndex已经删除,便导致了there’s no route matched的错误。

3、Dialog在使用ContentProvider的时候不显示

Dialog在使用ContentResiver导入通讯录的时候不显示
解决办法:开启子线程,把导入过程放入子线程中操作
原因:暂且不知

4、调整AndroidStudio内存

在AndroidStudio安装目录下的bin文件夹里找到studio64.exe.vmoptions文件:

-Xms512m
-Xmx3072m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djna.nosys=true
-Djna.boot.library.path=-da

修改其中的Xms、Xmx、XX:MaxPermSize。

其中-Xms 是JVM启动的起始堆内存,堆内存是分配给对象的内存。一般默认设置是128m,建议改成512m
其中-Xmx 是 Java 虚拟机启动时的参数,用于限制最大堆内存。所以这里也需要更改。这里的更改根据电脑的实际情况进行分配。笔者这里设置了3072m。
其中-XX:MaxPermSize 是指定最大的Permanent generation大小。Permanent generation space,实际上就是方法区,存储了Class的信息以及一些其他信息。有时开发时出现的错误如Permgen Space方面的,就是指这个内存溢出了。所以一般这个可以不改,也可以加大一点。

5、ViewPager+Fragment,Fragment销毁后重新加载页面空白

两种情况:
1、重写FragmentPagerAdapter的destroyItem()方法:

    @Overridepublic void destroyItem(ViewGroup container, int position, Object object) {}

跳转到ViewPager页面时直接定位到第三个页面(或后面几个页面)时,切换到第一个页面,第一个页面空白。

2、不重写FragmentPagerAdapter的destroyItem()方法,当ViewPager页面显示过后被销毁然后再次显示时页面空白。

原因:
Fragment是绑定在Activity中的,Viewpager切换销毁Fragment时并没有走onDestroy()方法。Fragment中的全局变量也同样没有被释放回收。但是View已经被重新替换了:

    if (mAdapter == null) {mAdapter = new XiaoTookenAdapter(totals);mAdapter.setOnItemClickListener(XiaoTookenFragment.this);mAdapter.setLoadMoreView(new XiaoMeiLoadMoreView());mAdapter.bindToRecyclerView(mRecyclerView);mAdapter.setOnLoadMoreListener(XiaoTookenFragment.this, mRecyclerView);} else {mAdapter.notifyDataSetChanged();}

mAdapter不为空走else,但是mRecyclerView已经重新findViewById了。

解决:
在onDestroyView()方法中释放资源,清空数据。或者在onCreateView()初始化数据。或者将contentView也保存下来,不要每次都重新inflate一个View。

6、DataBinding 使用泛型报错

与元素类型 "variable" 相关联的 "type" 属性值不能包含 '<' 字符。

要使用 ‘<’ 的转义字符:<

7、DataBinding 使用ObservableMap进行数据绑定报错

Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'android:text' with parameter type V on android.widget.TextView.
file:E:\demo\DataBindingDome\app\src\main\res\layout\activity_main.xml
loc:46:28 - 46:41
****\ data binding error ****

layout 布局中声明ObservableMap需要添加泛型。否则使用的时候报错。

8、解决阿里云SDK出现的Stream closed

https://blog.csdn.net/weixin_33721427/article/details/87466839

9、CoordinatorLayout 嵌套Recyclerview再嵌套Recyclerview滑动出现冲突解决办法

给最里层的RecyclerView设置 nestedScrollingEnabled=“false”

CoordinatorLayout实现了NestedScrollingParent,纵向RecyclerView是CoordinatorLayout的子View,RecyclerView的滑动能通知到CoordinatorLayout,继而由CoordinatorLayout协调让CollapsingToolbarLayout发生折叠。上面出bug的原因也能理解了,横向RecyclerView的父View是纵向RecyclerView,而RecyclerView只实现了NestedScrollingChild,无法像CoordinatorLayout一样响应。所以要关闭横向RecyclerView的嵌套滑动功能,让横向RecyclerView如同其他嵌入纵向RecyclerView的view一样,触发折叠。

10、Fragment点击事件穿透问题

通过FrameLayout布局添加Fragment,然后控制布局的显示和隐藏时会出现点击事件穿透的问题,即点击显示的Fragment下层隐藏的Fragment会响应点击事件。解决方法:在每个Fragment的根布局上添加android:clickable=“true”

11、JSON转义字符去除

依赖:“org.apache.commons:commons-text:1.7”
方法:StringEscapeUtils.unescapeJava(it)
eg:"{\"IsAnonym\": 1,\"Contents\": \u003Cp>回家姐姐聚义堂\u003C/p>,\"Title\": 哥古古惑惑}"
转换之后:"{"IsAnonym": 1,"Contents": <p>回家姐姐聚义堂</p>,"Title": 哥古古惑惑}"

12、Android5.0以下手机在请求接口的时候报 java.lang.NoClassDefFoundError 异常

我使用的是Retrofit2.0网络请求框架。
原因:我在项目中还是用了一个 com.liulishuo.okdownload:okhttp 下载框架,它里面包含了okhttp4.3.1,它仅支持Android5.0+。使用时Retrofit2中的okhttp3.10.0会被高版本覆盖,所以会报错。
解决:剔除 com.liulishuo.okdownload:okhttp 中的okhttp3包

 api (com.liulishuo.okdownload:okhttp:1.0.5){exclude group: 'com.squareup.okhttp3'}

13、Application onCreate()方法重复执行

部分第三方工具初始化时的时候会另起一个进程(如环信聊天),当app中有多个进程时,每个进程启动时都会初始化一次Application。

解决方法:获取当前进程名,与主项目包名比较判断是不是主进程。将只需要在主进程中初始化的操作放到这里进行。

/*** 获得当前进程的名字** @param context* @return 进程号*/public static String getCurProcessName(Context context) {int pid = android.os.Process.myPid();ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {if (appProcess.pid == pid) {return appProcess.processName;}}return null;
}

14、ViewGroup down事件不被消费则不会产生其他事件

ViewGroup down事件没有被自己和子view消费,不会产生其他任何事件(其实是产生其他事件的时候被拦截了,不会传递到viewGroup的dispatchTouchEvent方法中)。
处理办法:可以在ViewgGroup中重写onTouchEvent()方法 return true 自己消费

@Override
public boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:return true;}return super.onTouchEvent(event);
}

15、Activity#onResume() 方法中调用startService()报错

java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.example.servicedemo/.MyService }: app is in background uid UidRecord{66764c0 u0a86 LAST bg:+1m2s714ms idle change:idle procs:1 seq(0,0,0)}

分析:Android8.0后不允许app后台通过startService()去启动服务
文档连接:https://developer.android.google.cn/about/versions/oreo/background
但是我这里是在Activity#onResume()中启动的,按理说不会有问题,但是查看线上日志发现偶尔会出现崩溃。网上查找有人说是系统的一个bug。
处理:通过try{}cache(){}捕获这个异常,然后在cache中延迟1秒钟启动。

未完待续…

Android开发中的一些问题相关推荐

  1. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

  2. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧

    我们开发项目的时候,经常会看到禁止的情况,而Android开发中并没有直接调用的接口,下面是爱站技术频道小编就给大家介绍的Android开发中禁止下拉式的实现技巧,希望网友们喜欢! 分享给大家供大家参 ...

  3. 史上最全Android开发中100%会用到的开源框架整理(1/5)

    其实这个开源框架整理很久了,只是一直放在有道云笔记里面,笔者还有很多写得文章都放在有道云笔记里面,有时间都好好整理一下放出来,本篇文章也会不定期更新,由于整理的开源框架分类都有200多个,所有这次只将 ...

  4. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  5. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  6. Android开发中的Handler和多线程

    在Android开发中我们常常用到Handler这个类去处理消息队列中的消息,以下这个例子实现的是利用Handler传递一个消息给线程,线程运行run()方法去更新进度条的进度,以下是源代码: pub ...

  7. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  8. C/C++在Android开发中的应用

    JNI开发系列阅读 JNI与底层调用1:http://blog.csdn.net/axi295309066/article/details/60758515 JNI与底层调用2:http://blog ...

  9. android开发模式,Android开发中无处不在的设计模式

    Android开发中无处不在的设计模式――单例模式 Android开发中无处不在的设计模式――Builder模式 前面介绍了单例模式和Builder模式,有兴趣的见上面两个链接,这篇文章侧重介绍1下视 ...

  10. android自定义progressbar样式,Android开发中如何实现自定义ProgressBar的样式

    Android开发中如何实现自定义ProgressBar的样式 发布时间:2020-11-20 16:08:10 来源:亿速云 阅读:294 作者:Leah Android开发中如何实现自定义Prog ...

最新文章

  1. Linux文本过滤与处理命令
  2. 解决 NDK is missing a “platforms“ directory.
  3. POJ 3855 计算几何·多边形重心
  4. 风控建模中的样本偏差与拒绝推断
  5. mysql查询表字段是否存在_Mysql判断表字段或索引是否存在
  6. java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端
  7. Python小白的数学建模课-18.最小生成树问题
  8. 5G(2)---NR协议栈及功能1 - 总体架构与物理层
  9. 12 File and Device I/O using System Calls
  10. 前端项目,将package.json数据放到项目某处使用
  11. php相关知识,PHP的基础知识简单介绍
  12. 每周荐书:JVM、Nginx、小程序(评论送书)
  13. 限制用户不能删除SharePoint列表中的条目(项目)
  14. 火车售票系统html模板,火车售票系统设计
  15. vue项目 pc端自适配方案
  16. 《明朝那些事儿》--主要人物整理
  17. mysql创建table
  18. ubuntu snap 安装的nextcloud 忘记管理员密码,重新设置密码。
  19. 人脸识别:人脸数据集
  20. 参考文献格式字号字体_实用文档其他之参考文献的正确格式要求参考文献字体格式要求...

热门文章

  1. java wildcard_java泛型 wildcard
  2. stata最大值最小值命令_用Stata实现数据标准化
  3. loss 加权_为每个类别/实例编写自定义损失加权,对,的,loss
  4. 如何使用格式工厂将vtt文件格式字幕加在视频文件中
  5. ofstream错误:error: variable ‘std::ofstream ofs’ has initializer but incomplete type
  6. 3d在线展示_手表三维商品展示解决方案
  7. Spring Security 集成 OIDC 项目编码 | 认证(三)
  8. 插头DP 概率DP / 期望DP
  9. 安卓开发贴吧!Android高级工程师必看系列,建议收藏
  10. 当电竞在亚运会绽放,玩家也从此有了信仰