use*_*558 37 android android-activity
我在4.4.2设备上遇到此异常.在Android 4.3设备或更低版本上无法重现.
设置是我有一个家庭活动(支持的子类ActionBarActivity).home活动检查一个布尔标志,如果为true,则启动一个启动画面活动(是的,理想情况下,启动在home活动之前,但我们假设我现在无法改变它以此方式工作).
启动启动屏幕startActivityForResult,它从服务器下载一些配置选项,然后完成并将结果返回到主页活动.
奇怪的是这在4.3及以下版本中工作正常,但在4.4设备上,我得到了上述异常(完整堆栈跟踪):
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)
Run Code Online (Sandbox Code Playgroud)
基于上面的内容,它看起来像onStop(因为我在onCreate上启动了splash活动)在onResume之前为Home Activity调用.
为什么现在这会导致4.4.x出现问题?
use*_*558 20
这对我来说似乎不对.splash活动现在将成为堆栈中的顶级活动,因此HomeActivity最终将调用onStop生命周期方法.巧合的是,我将startActivity泼水活动的调用从中onCreate移到onResume了HomeActivity,并且错误消失了.
she*_*tal 10
这个问题仍将出现在Android 4.4.2及以上的所有高端手机上,包括NEXUS 5和Samsumg s4,因为onResume被调用但它仍然处于动画阶段.所以如果你试图在onResume上启动一个活动,问题将会出现复制.
将您的切换活动放在处理程序延迟方法中.
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case 1:
//Start another Activity Here
default:
break;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
在onResume中调用它.
handler.sendEmptyMessageDelayed(1, 1000);
Run Code Online (Sandbox Code Playgroud)
到那时你可以显示加载器或其他东西或阻止用户交互
| 归档时间: |
|
| 查看次数: |
52600 次 |
| 最近记录: |