Android问题集锦
发布时间 :
字数:559
阅读 :
说明
一些问题集锦,采取Q-A的形式或者表格形式,用于列出问题描述-问题原因-解决方案
java.lang.IllegalStateException
编号 |
错误描述 |
闪退原因 |
解决方案 |
1 |
Not allowed to start service Intent { }: app is in background uid |
Android 8.0 + 不允许后台启动 Service |
可以使用 JobIntentService |
2 |
Only fullscreen opaque activities can request orientation |
透明的 Dialog 样式的 Activity 在Android 8.0 版本的系统 不允许设置朝向 |
在代码中或者Manifest中去掉朝向相关的代码 |
3 |
Fragment not attached to a context |
Fragment 页面已经关闭,但 Fragment 里的定时任务或网络请求还在运行,任务完成后进行 UI 操作(内存泄漏) |
通过架构层面解决内存泄漏问题,将View层和Model解耦;View 层发起的定时任务或网络请求页面关闭是要取消。 |
4 |
Fragment already added |
相同的 Fragment 重复添加到 Activity |
Solution |
android.app.RemoteServiceException
编号 |
错误描述 |
闪退原因 |
解决方案 |
1 |
Context.startForegroundService() did not then call Service.startForeground() |
为了解决Android 8.0 + 不允许后台启动 Service 的问题,大家可能搜索到的解决方案是使用 startForegroundService ,但是没有在后面调用 Service.startForeground() |
JobIntentService |
java.lang.NullPointException
编号 |
错误描述 |
闪退原因 |
解决方案 |
1 |
Attempt to invoke virtual method on a null object reference |
使用空对象调用其成员方法或者属性 |
1,尽量使用 Kotlin 能解决绝大部分的空指针;2,通过聚检测代码,如 findbugs、lint等工具。 |
避免Fragment重复添加,导致页面重影
在内存重建(旋转屏幕、用户动态设置本App的权限),需要判断 Bundle savedInstanceState
1 2 3 4 5 6 7
| if (savedInstanceState != null) { myFragment = getSupportFragmentManager().findFragmentById(R.id.container); }
if (myFragment == null) { myFragment = new MyFragment(); }
|
如何避免 java.lang.IllegalStateException: Fragment already added 异常
异常的原因在于一个fragment实例多 add 多次。
1 2 3 4 5 6 7 8
| FragmentTransaction ft = fragmentManager.beginTransaction(); if (fragment.isAdded()) { ft.show(fragment); } else { ft.add(frameId, fragment); } ft.commitAllowingStateLoss();
|
在极端情况下哪怕判断了 isAdded 方法也会出现 Fragment already added 异常
可以使用 replace 方法代替 add 方法:
1 2 3 4 5 6 7
| FragmentTransaction ft = fragmentManager.beginTransaction(); if (fragment.isAdded()) { ft.show(fragment); } else { ft.replace(frameId, fragment); } ft.commitAllowingStateLoss();
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nathanwriting@126.com
文章标题:Android问题集锦
字数:559
本文作者:Nathaniel
发布时间:2021-04-08, 11:04:47
最后更新:2023-11-06, 22:59:19
原始链接:http://example.com/2021/04/08/android-problem-collection/
版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。