我正在开发一个应用程序,我正在使用skobbler sdk 2.4,当我打开Map时遇到问题,然后我转到后台并打开一个需要大量内存的应用程序,如Clash of Clans:P。
几秒钟后,当我返回包含地图的活动时,它会变黑并在2秒后将此错误传递给logcat:
A/libc﹕ Fatal signal 11 (SIGSEGV), code 1, fault addr 0x44 in tid 27000 (GLThread 72284)
我对sdk附带的示例尝试了同样的事情,起初它崩溃了,因为它无法找到保存在应用程序实例中的String路径。我已针对此问题制定了解决方法,并修复了来自应用程序类DemoApplication
的null异常崩溃。这不是问题。问题在于地图。
在此之后我走到了同一点,即使使用示例应用程序,我也遇到了同样的问题。地图崩溃,在活动处于后台后,它无法再次初始化。
任何建议都表示赞赏:)
答案 0 :(得分:2)
感谢SylviA,当我检查我的示例应用程序时,我试图修复Null指针异常问题并通过电子邮件发送。
当我第二次编写代码时,我意识到我做错了,这就是这次荒谬崩溃的原因。
在MapActivity.class
初始化地图时,我在代码中发布了我已做出更改的部分。这些更改是在DemoUtils.class
/**
* Initializes the SKMaps framework
*/
public static void initializeLibrary(final Context context) {
final DemoApplication app = (DemoApplication)context.getApplicationContext();
// get object holding map initialization settings
SKMapsInitSettings initMapSettings = new SKMapsInitSettings();
// set path to map resources and initial map style
SharedPreferences mSharedPreferences = context.getSharedPreferences("map",0);
if(app.getMapResourcesDirPath()==null) { // here happens the first error
Toast.makeText(context,"Null Exception Error avoided", Toast.LENGTH_SHORT).show();
app.setMapResourcesDirPath(mSharedPreferences.getString("map_path",null));
}else {
SharedPreferences.Editor mEditor = mSharedPreferences.edit();
mEditor.putString("map_path",app.getMapResourcesDirPath());
mEditor.commit();
}
initMapSettings.setMapResourcesPaths(app.getMapResourcesDirPath(),
new SKMapViewStyle(app.getMapResourcesDirPath() + "daystyle/", "daystyle.json"));
我做错了就是在这一行,它是这样的:
initMapSettings.setMapResourcesPaths(app.getMapResourcesDirPath(),
new SKMapViewStyle( null + "daystyle/", "daystyle.json"));
必须这样做:
initMapSettings.setMapResourcesPaths(app.getMapResourcesDirPath(),
new SKMapViewStyle( app.getMapResourcesDirPath() + "daystyle/", "daystyle.json"));
感谢您的时间:)