我最近升级了我的应用程序,使用了SKMaps 3.0.2,似乎一切都正常工作,只是当我的活动(“ViewLocationActivity”)(它调用了一个扩展Android.support.v4.app.Fragment(“NewMapFragment”)的片段,在后台运行了一段时间之后重新启动,并且调用了onStart()方法,该片段无法膨胀SKMapViewWholder并崩溃。我已经附上了日志,但它的原因似乎是这一行
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.skobbler.ngx.map.SKMapViewStyle.getStyleFileName()' on a null object reference at com.skobbler.ngx.map.SKMapViewHolder.a(SourceFile:254)
这种情况在以前的SDK版本中没有发生,特别奇怪,因为它不是在首次加载片段时发生的,而是在调用onStart()时才发生的。
相关代码段
@Override
public void onStart() // In ViewLocationActivity {
super.onStart();
Intent intent = new Intent(this, LocationService.class);
bindService(intent, mConnection, BIND_AUTO_CREATE);
}
public void onCreate(Bundle savedInstanceState) // in NewMapFragment {
super.onCreate(savedInstanceState);
Methods.initializeSKMaps(getActivity());
locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
registerLocationListener();
SKCurrentPositionProvider currentPositionProvider = new SKCurrentPositionProvider(getActivity());
currentPositionProvider.setCurrentPositionListener(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) // in NewMapFragment {
// App crashes in this line
mView = inflater.inflate(R.layout.fragment_new_map, container, false);
mapHolder = (SKMapViewHolder)mView.findViewById(R.id.map_surface_holder);
mapHolder.setMapSurfaceListener(this);
initializeControlButtons();
initializeBottomSheet();
return mView;
}
<!-- fragment_new_map -->
<android.support.design.widget.CoordinatorLayout
android:id="@+id/skobbler_map_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.skobbler.ngx.map.SKMapViewHolder
android:id="@+id/map_surface_holder"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<include layout="@layout/map_control_layout"
android:id="@+id/map_control_layout"/>
</android.support.design.widget.CoordinatorLayout>
logcat:
我不知道这是否是一个理想的解决方案,但由于我没有得到Skobbler SDK中可能导致这种行为的答案,所以我设法解决了这个问题,只需在调用onCreate()(如果进程被OS破坏,则调用onCreate()时从后堆栈中删除有问题的片段,该片段膨胀并包含SkMapsViewWholder)。这迫使活动重新初始化&重新创建片段,这似乎解决了问题。我希望它在某一时刻对某人有帮助
private void initializeViews() {
// Setting the pre-arrival layout
setContentView(R.layout.view_location_layout);
initializeNavigationDrawer();
initializeBottomSheet();
initializeProgressBar();
removeAllFragments();
}
private void removeAllFragments() {
while (fragmentManager.getBackStackEntryCount() > 0)
fragmentManager.popBackStackImmediate();
}
问题内容: 我正在尝试转储所有活动线程的列表,包括每个线程的当前堆栈。我可以使用threading.enumerate()获得所有线程的列表,但是我不知道从那里到堆栈的方法。 背景:Zope / Plone应用程序有时会出现故障,消耗100%的cpu,需要重新启动。我觉得这是一个循环,无法正常终止,但是我无法在test- environemt中重现该循环以进行验证。我设法注册了可以从外部触发的信号
在工作中,当通过firebase门户创建动态链接时,我们尝试使用可选的活动跟踪UTM参数。 动态链接工作正常,据我所知,从所有官方文档中可以看出,在创建动态链接时,只需在最后一个可选步骤中添加UTM值,就应该会导致这些值与事件一起发送。 但是,当我们在dynamic_link_app_open事件的事件或转化标签上查看没有看到任何归因值。我们看到该事件正在发送,但我们只是没有获得广告系列归因值,因
问题内容: 有没有一种方法可以为java中的特定线程输出调用跟踪? 我不需要堆栈跟踪。我想在每个对象上进行一系列调用以进行跟踪。 问题答案: 我想您可能会发现这很有趣。它是一个Java代理,它使用slf4j框架将日志记录添加到方法中,从而实际记录输出。然后,只需配置日志记录框架以仅打印出您感兴趣的线程即可。 http://www.slf4j.org/extensions.html#javaagen
问题内容: 我的同事在工作中提出了一个我无法回答的问题(由于缺乏经验),该问题与跟踪表中相关字段的变化有关。 想象一下,我们有3个表,每个表20个字段。在此示例中,我们考虑这些表中的每一个都有2个字段,一个名为LastUpdatedOn,另一个名为LastUpdatedBy。 如果我们只想跟踪这3个表中的更改,而只跟踪几个特定字段,而没有为每个表创建包含更新前最新版本的历史表,那么我们如何跟踪这些
问题内容: 我正在从python开发C扩展,并且获得了一些段错误(在开发过程中不可避免…)。 我正在寻找一种显示段错误发生在哪一行代码的方法(一个想法就像跟踪每一行代码),我该怎么做? 问题答案: 这是一种输出代码运行的Python每行的文件名和行号的方法: 输出: (当然,您可能希望将跟踪输出写入文件。)