文档章节

android 开发时候出现的错误异常集

jsonL
 jsonL
发布于 2016/07/08 14:40
字数 1086
阅读 65
收藏 0

1、 错误 :Can not perform this action after onSaveInstanceState 场景:应用中使用FragmentDialog统一管理弹出框,分别在基类BaseActivity和BaseFragment中增加显示和隐藏方法(show 和dismiss)。在某些网络异步请求中,在请求开始时调用show()方法显示弹出框,再请求结束时调用dissmiss隐藏弹出框。 错误日志:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at com.yunyue.weishangmother.activity.BaseFragmentActivity.showProgressDialog(BaseFragmentActivity.java:47) at com.yunyue.weishangmother.activity.LoginActivity$1.onPrepare(LoginActivity.java:98) at com.yunyue.weishangmother.dao.BaseDao.doAction(BaseDao.java:45) at com.yunyue.weishangmother.dao.AccountMangeDao.login(AccountMangeDao.java:35) java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at com.yunyue.weishangmother.activity.BaseFragmentActivity.dismissProgressDilag(BaseFragmentActivity.java:63) at com.yunyue.weishangmother.activity.GoodsListActivity$5.onFinish(GoodsListActivity.java:209) at com.yunyue.weishangmother.dao.BaseDao$1.onFinish(BaseDao.java:108) java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at com.yunyue.weishangmother.activity.BaseFragmentActivity.dismissProgressDilag(BaseFragmentActivity.java:64) at com.yunyue.weishangmother.fragment.BaseFragment.dissmissProgressDialog(BaseFragment.java:119) at com.yunyue.weishangmother.fragment.HomeFragment$1.onFinish(HomeFragment.java:151) at com.yunyue.weishangmother.dao.BaseDao$1.onFinish(BaseDao.java:107)
问题分析: 情况一:在一个程序中使用fragment+异步更新界面,今天出现发现异常,记录解决办法。 异常:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState; 分析:仔细查看后发现,是由于异步线程结束后,要弹出对话框提示,但是这时候fragment已经进入后台,所以抛出这个异常; 解决办法:在线程运行结束后,需要弹出对话框的时候,先做一个判断isResumed()。 google给的文档中是这样说的: public final boolean isResumed () Return true if the fragment is in the resumed state. This is true for the duration of onResume() and onPause() as well. 翻译:当fragment在resumed状态时返回true,即fragment在生命周期的onResume()和onPause()之间时返回true。 情况二:在Activity中dismissDiaog时,提示上述错误。 解决方法: DialogFragment本身提供了两个方法: void dismiss() 说明:Dismiss the fragment and its dialog. void
dismissAllowingStateLoss() 说明:Version of dismiss() that uses FragmentTransaction.commitAllowingStateLoss(). 使用dismissAllowingStateLoss可以忽略状态。但是对于show()方法提供的两个方法,内部都是用了commit()提交,而不能使用commitAllowingStateLoss()。 参考:把commit()方法替换成 commitAllowingStateLoss()就行 http://blog.sina.com.cn/s/blog_5da93c8f0101rgb2.html

情况三:针对Activity中showDialog()时显示上述问题,参考情况一,增加一个标志位isResume来控制。

2、Could not read input channel file descriptors from parcel. 错误日志: java.lang.RuntimeException: Could not read input channel file descriptors from parcel. at android.view.InputChannel.nativeReadFromParcel(Native Method) at android.view.InputChannel.readFromParcel(InputChannel.java:148) at android.view.InputChannel$1.createFromParcel(InputChannel.java:39) at android.view.InputChannel$1.createFromParcel(InputChannel.java:36)
网上给出的说法: (1)RemoteView中添加的图片太大了,超过40K会报这个异常 (2)Intent传递的数据太大了超过1M也会报这个错误 (3)FileDescripter太多而且没有关闭,looper太多没有quit。 (4)试试在AndroidManefest.xml中对当前Activity配置configchange=“orientation|keyboardHidden”强制在Activity横竖屏切换的时候不重新onCreate。
3、android.os.TransactionTooLargeException(分享图片太大) android.os.TransactionTooLargeException at android.os.BinderProxy.transact(Native Method) at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:683) at android.view.ViewRootImpl.setView(ViewRootImpl.java:525) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:260) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.widget.Popupwindows.invokePopup(PopupWindow.java:1019) at android.widget.PopupWindow.showAtLocation(PopupWindow.java:850) at android.widget.PopupWindow.showAtLocation(PopupWindow.java:814) at com.yunyue.weishangmother.util.UMengSDK.shareWithCustomPanel(UMengSDK.java:97) 通过代码分析是在调用友盟分享时出现错误。具体在shareWithCustomPanel方法中建立分享内容(包括标题、内容、图片链接),其中 public void setShareContent(String title, String content, String imagePath, String url, String id, String type) { this.title = title; this.content = content; this.id = id; this.type = type; if (!TextUtils.isEmpty(imagePath)) { urlImage = new UMImage(mActivity, imagePath);
} else {
urlImage = new UMImage(mActivity, R.drawable.ic_launcher); } urlImage.setTargetUrl(url); this.url = url; } 分析可能是传入的图片链接中图片过大,导致上述问题。

4、java.lang.IllegalStateException: eglMakeCurrent failed EGL_BAD_ALLOC at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:1123) at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:1010) at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:833) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1845) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1261)

5、java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@3bdd2de8 at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:871) at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:2110) at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:529) 解决:发现是webview的 ZoomButton,也就是那两个放大和缩小的按钮,导致的。如果设置为让他们出现,并且可以自动隐藏,那么,由于他们的自动隐藏是一个渐变的过程,所以在逐渐消失的过程中如果调用了父容器的destroy方法,就会导致Leaked。 所以解决方案是,在destroy之前,先让他俩立马消失。 我的解决办法是,在finish掉此activity时,把子view 全部remove掉。理论上说,只需要remove这个zoom view就可以,但是我没找到获取该view的办法,只好remove掉所有的子view。这样在activity destroy时就不会报 WindowLeaked的错误了。 @Override public void finish() { ViewGroup view = (ViewGroup) getWindow().getDecorView(); view.removeAllViews();
super.finish(); } 也有人说,可以直接设置webView.setVisiable(View.GONE); 在Activity的onDestroy里面加上这么一句:web.setVisibility(View.GONE);把WebView设置为GONE就可以了。

本文转载自:http://blog.csdn.net/a345017062/article/details/6838449

jsonL
粉丝 0
博文 8
码字总数 751
作品 0
高级程序员
私信 提问
Activity.startManagingCursor方法

总结一下Activity.startManagingCursor方法: 转 我们将获得的Cursor对象交与Activity 来管理,这样Cursor对象的生命周期便能与当前的Activity自动同步,省去了自己管理Cursor。 1.这个方法使...

AlexZhuang
2012/06/21
268
1
android和java中常见 Exception

1, 常见的nullpointerexception,在调式程序中最常见是空指针异常了,这个是一般是对象实例化为null, 比如在组件的实例化和class对象实例化的时候, 声明 TextView mTestTV; 没有findViewByI...

dominic69
2015/03/19
76
0
Android开发错误集(二)

28: Caused by: java.lang.ClassCastException: com.xiyili.youjia.ui.start.StartGaFragment cannot be cast to android.app.Fragment 在使用Support Library库中的Fragment中时,如果使用是......

李海珍
2014/05/09
7K
1
android开发中出现的错误集(不断更新)

最后更新:2013-01-16 23.在使用AndroidHttpClient时有如下错误: 01-16 22:18:39.222: E/AndroidHttpClient(26745): java.lang.IllegalStateException: AndroidHttpClient created and nev......

李海珍
2012/03/17
63.5K
6
Android异常:that was originally added here

02-19 15:08:02.228: E/WindowManager(22172): Activity com.test.activity.TestActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@427bebc8 that was or......

麦兜LK
2014/02/19
14K
2

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部