我通过一个简单的意图调用活动:
Intent startNewActivityOpen2 = new Intent(this, TransitionLandscape.class);
if (extras != null) {
if (!extras.isEmpty()) {
startNewActivityOpen2.putExtras(extras);
}
}
startActivity(startNewActivityOpen2);
此当前活动也是TransistionLandscape.class是否重要?当我开始新活动时,该应用程序退出(不会崩溃)。通过调试器,永远不会调用新活动:(永远不会调用onCreate in)
从文档中可以看出,活动可以自我调用。
Logcat :
12-10 21:08:23.410 543-553/? I/ActivityManager: START u0
{cmp=com.assistek.ediary/.TransitionLandscape (has extras)} from pid
4801
12-10 21:08:23.470 543-573/? D/dalvikvm: GC_FOR_ALLOC freed 437K, 18% free 14435K/17524K, paused 51ms, total 52ms
12-10 21:08:23.490 4801-4801/com.assistek.ediary D/Base Activity: **********Pause class com.assistek.ediary.TransitionLandscape
**********Pause Navigate: true
**********Resume class com.assistek.ediary.TransitionLandscape
**********Focus: false Activity: class com.assistek.ediary.TransitionLandscape
12-10 21:08:23.500 4801-4801/com.assistek.ediary D/Base Activity: **********Pause class com.assistek.ediary.TransitionLandscape
**********Pause Navigate: false
12-10 21:08:23.520 543-600/? I/InputReader: Reconfiguring input devices. changes=0x00000004
Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 0, mode 1, display id 0
12-10 21:08:23.520 543-1012/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w600dp h880dp 213dpi
lrg port finger -keyb/v/h -nav/h s.11}
12-10 21:08:23.540 961-961/? I/PCKeyboard: onConfigurationChanged()
12-10 21:08:23.580 543-561/? I/WindowManager: Screen frozen for +74ms due to Window{425793b8 u0 com.assistek.ediary/com.assistek.ediary.TransitionLandscape}
12-10 21:08:23.600 634-634/? D/PhoneStatusBar: mSettingsPanelGravity = 8388661
12-10 21:08:23.690 543-1045/? I/ActivityManager: Killing 1995:com.google.android.setupwizard/u0a50 (adj 15): empty #17
12-10 21:08:23.720 4801-4801/com.assistek.ediary W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection
12-10 21:08:23.730 4801-4801/com.assistek.ediary D/Base Activity: **********Stop Navigate Away false
**********Stop class com.assistek.ediary.TransitionLandscape
**********Stop Focus ToClass class com.assistek.ediary.TransitionLandscape
Task ID 151
**********Destroy class com.assistek.ediary.TransitionLandscape
12-10 21:08:23.740 4801-4801/com.assistek.ediary D/Time calculation:: Destroy: class
com.assistek.ediary.TransitionLandscape
12-10 21:08:25.660 543-561/? D/dalvikvm: GC_EXPLICIT freed 287K, 18% free 14449K/17524K, paused 8ms+5ms, total 78ms
12-10 21:08:26.430 543-600/? I/InputReader: Reconfiguring input devices. changes=0x00000004
Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 1, mode 1, display id 0
12-10 21:08:26.430 543-566/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w961dp h528dp 213dpi lrg land
finger -keyb/v/h -nav/h s.12}
12-10 21:08:26.460 961-961/? I/PCKeyboard: onConfigurationChanged()
另外,打电话:
recreate()
除了进行新的活动外,还会导致应用退出(不会崩溃)。
编辑:清单
<activity
android:name=".TransitionLandscape"
android:configChanges="orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden">
</activity>
实际上,我在TransitionLandscape之后调用的任何活动都会导致该应用退出。这是内存问题吗?
答案 0 :(得分:2)
该意图之后,由于收到更改的配置,您的应用程序崩溃了。
12-10 21:08:23.520 543-600/? I/InputReader: Reconfiguring input devices. changes=0x00000004
Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 0, mode 1, display id 0
12-10 21:08:23.520 543-1012/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w600dp h880dp 213dpi
lrg port finger -keyb/v/h -nav/h s.11}
12-10 21:08:23.540 961-961/? I/PCKeyboard: onConfigurationChanged()
12-10 21:08:23.740 4801-4801/com.assistek.ediary D/Time calculation:: Destroy: class
com.assistek.ediary.TransitionLandscape
您可以尝试
android:configChanges="orientation|screenSize|keyboardHidden" />
还有其他方法可以处理配置更改 您可以检查此link
答案 1 :(得分:1)
请您更改以下几行。
android:configChanges="orientation"
收件人
android:configChanges="orientation|screenSize|keyboardHidden" />
在清单文件中。
答案 2 :(得分:0)
我认为您应该尝试删除“ Adding Extras代码块”,以了解如果问题是从此开始的,或者您也可以稍微修改TransitionLandScape活动,例如,删除清单文件..中的launchMode =“ singleTask”标签。 。然后再次运行app来检查您是否解决了问题。这只是我的意见,我的英语不太好,如果有语法错误,抱歉。
答案 3 :(得分:0)
这不是内存问题,
日志的这一行清楚地表明,更改活动方向( onConfigurationChanged())
时您遇到了问题WindowManager:由于窗口原因,屏幕冻结了+ 74ms
在清单文件中,不允许更改设备方向时重新创建活动
尝试使用 recreate()方法或 onCreate()方法
中的代码更改/设置应用程序方向setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
答案 4 :(得分:-1)
为您的活动使用不同的名称。