在正常的开发过程中,我注意到特定活动似乎在第二次调用时停止响应.
即 menu->(intent)->activity->(back button)->menu->(intent)
在logcat中没有任何相关内容.
我甚至不知道从哪里开始调试这个也不知道要显示的代码是什么onClick和onResume片段:
if (!dictionary.getClassName().equals("")) {
this.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i;
i = new Intent(mContext, NVGlobeNavigatorVC.class);
i.putExtra("PAGE_TITLE", title);
i.putExtra("TITLE", _dictionary._title);
mContext.startActivity(i);
});
} else {
findViewById(R.id.greaterthan).setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)
并在正在启动的活动中:
@Override
protected void onResume() {
super.onResume();
...
Run Code Online (Sandbox Code Playgroud)
清单中没有任何异常:
<activity
android:name=".NVViews.NVGlobeNavigatorVC"
android:theme="@style/WindowTitleBackground"
android:label="GlobeNavigator"/>
Run Code Online (Sandbox Code Playgroud)
为清楚起见,我将断点放在mContext.startActivity(i)和super.onResume().我单击视图,onClickListener并且两个断点都按预期命中.然后按下后退按钮,返回菜单. onPause()按预期调用.
我触摸视图再次启动活动,断点打开startActivity但不在onResume()目标活动中.屏幕变黑,我可以再次走的唯一方法是重启应用程序.如果我暂停调试器,它会暂停,dalvik.system.NativeStart()这意味着活动永远不会重新启动.
我不认为它是相关的,但我正在使用Intellij IDEA并删除了所有输出目录,使缓存无效并完成了完全重建.
目标API是8.我已经在2.3和4.0.4上测试过.
有任何想法吗?我很难过.
[编辑]
在onPause,我将一些东西保存到prefs.目的onResume()是让他们再次回来:
@Override
protected void onPause() {
super.onPause();
SCPrefs.setGlobeViewViewPoint(globeView.getViewPoint());
SCPrefs.setGlobeViewZoom(globeView.getZoom());
SCPrefs.setGlobeViewScale(globeView.getScale());
}
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题,而且有点深奥。
我有一个大型静态数据结构,它加载在类静态初始化程序中。该初始化程序中存在一个错误,如果数据结构仍在加载,则在第二次调用它时会导致无限循环。
因为该类在我的活动中被引用,所以类加载器在调用onCreate()之前加载它。onResume()
该循环显示活动加载程序已挂起。