Android 4.4.2 – java.lang.RuntimeException:执行停止没有恢复的活动
我在4.4.2设备上得到这个exception。 在Android 4.3或更低版本上不可重现。
安装程序是我有一个家庭活动(支持ActionBarActivity
子类)。 家庭活动检查一个布尔标志,如果是true,则启动一个启animation面活动(是的,理想的情况是在家庭活动之前,但我们假设我现在不能改变它的工作方式)。
启animation面通过startActivityForResult
启动,它从服务器下载一些configuration选项,然后结束并将结果返回到家庭活动。
奇怪的是这是4.3和以下的工作正常,但在4.4设备上,我得到上述exception(完整的堆栈跟踪):
02-21 13:36:16.733 24409-24409/test.player E/ActivityThread﹕ Performing stop of activity that is not resumed: {test.player/test.ui.actvities.HomeActivity} java.lang.RuntimeException: Performing stop of activity that is not resumed: {test.player/test.ui.actvities.HomeActivity} at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3147) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3234) at android.app.ActivityThread.access$1100(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1223) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)
基于上面,它看起来像onStop(因为我在onCreate上启动的飞溅活动)之前调用HomeResult的onResume。
为什么现在在4.4.x中导致问题?
这对我来说不太合适。 splash活动现在将成为堆栈中的顶级活动,因此HomeActivity
onStop生命周期方法将最终被调用。 巧合的是,我将从onCreate
的splash活动的startActivity
调用移动到HomeActivity
onResume
,并且错误消失。
问题仍然会出现在4.4.2及以上版本的所有HighEnd手机上,包括NEXUS 5,Samsumg s4,因为onResume被调用,但仍然在animation阶段。所以如果您尝试在onResume中启动一个活动,问题将会重现。
把你的交换活动放在处理程序延迟的方法中。
Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case 1: //Strat another Activity Here default: break; } return false; } });
并在onResume调用这个。
handler.sendEmptyMessageDelayed(1, 1000);
到那个时候,你可以显示加载器或东西或阻止用户交互
在启动新的活动之前调用onResume超级方法:
super.onResume();
即使使用onResume()
,我也得到了这个exception,所以我最终重写了onPostResume()
并从那里开始活动,exception消失了。 不知道这是一个理想的解决scheme,但仍然…
- 有没有办法在Android上运行Python?
- 如何在使用TabLayout时更改选项卡背景颜色?
- NullPointerException不指向我的代码中的任何行
- 如何在RealmRecyclerViewAdapter中实现可过滤
- Android RecyclerView添加和删除项目
- Eclipse Android更改API级别
- 在android studio中导入项目时得到“解决”错误,无法加载类“org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'
- 如何使编辑文本不可编辑,但在JAVA中可点击
- 如何创buildEditText只接受在Android的字母表?