2011-11-23 91 views
1

我遇到了一个奇怪的问题。 首先,这是我的活动流程未知启动程序启动我的活动

IntActivity - > 111Activity - > 222activity - > 333Activity

每个活动都有[转发] & [返回]按钮。 (软件按钮) 而我在做什么的[转发]是:(即诠释到111)

Intent intent=new Intent(IntActivity.this, 111Activity.class); 
startActivity(intent); 
finish(); 

在[返回]这样做:(即333回到222。)

Intent intent=new Intent(333Activity.this, 222Activity.class); 
startActivity(intent); 
finish(); 
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right); 

现在,用户说如果他们快速按下[返回],有时IntActivity已关闭,他们会看到 一个空白页。看起来像333Activity。

空白页面表示它具有完整的UI组件,但内部没有任何用户数据。 如果333Activity正确启动,它应该填充用户数据,并且333Activity可以由222Activity启动。

以下是我是怎么上的logcat看

INFO/ActivityManager(1321): Starting activity: Intent { cmp=tw.com.xxxx.android.yyyy/.IntActivity } from pid 14517 
DEBUG/dalvikvm(14517):  GC_EXPLICIT freed 2084K, 56% free 3653K/8199K, external 8158K/10188K, paused 65ms 
ERROR/SurfaceFlinger(1321): layer=0xa49520 is not in the purgatory list 
INFO/ActivityManager(1321): Process tw.com.xxxx.android.yyyy (pid 14517) has died. 
// Here, the IntActivity ware been finished due to finish(); or System.exit(0); been called 

INFO/WindowManager(1321): WIN DEATH: Window{40a0cae8 tw.com.xxxx.android.yyyy/tw.com.xxxx.android.yyyy.111Activity paused=false} 
INFO/WindowManager(1321): WIN DEATH: Window{40a2a828 tw.com.xxxx.android.yyyy/tw.com.xxxx.android.yyyy.IntActivity paused=false} 
INFO/ActivityManager(1321): Start proc tw.com.xxxx.android.yyyy for activity tw.com.xxxx.android.yyyy/.333Activity: pid=14535 uid=10105 gids={3003} 

检查日志,它不是“启动活动”的最后一行,但“开始PROC”。

我还是不知道究竟怎么回事......任何意见或建议,欢迎:)

我的设备有: HTC DesireHD在Android 2.2的(不会有这个问题我贴) HTC DesireHD在android 2.3.3(显示这个问题,我张贴频率)

回答

0

我认为你在这里做错了: 开始一个有目的的活动是好的,但回到活动已经开始一次,做错了为你。当Android维护回栈日志的活动开始。

活动工作像堆叠卡片,第一活动 - >第二活动 - >第三活动 用android提供的后退按钮做回来,它按照相反的顺序进行,您不必为其启动另一个意图。

+0

感谢您的回复,我确实知道您说了什么,这就是我之前的做法。但在我的APP中,最多会有7个活动堆栈。由于这个,我得到了低内存问题......这就是为什么我在开始新活动时关闭了当前活动。 – RRTW

+0

7活动很好处理......但你应该寻找可能的解决方案来克服低内存问题,但不要改变android的工作方式。我理解的低内存问题很难解决,但这是你必须忍受的头痛。由于使用图像导致的内存不足问题? – Zoombie

+0

我仍然不知道...在上次活动完成后(),甚至是System.exit(0).....并且调用了另一个活动。不知道是谁做了“Start proc”。如果活动是由意图启动的,日志应该看起来像“正在开始活动...”,而不是“开始过程”。你有什么想法吗?谢谢 :) – RRTW