从后台

时间:2015-05-28 23:27:35

标签: android android-activity skmaps

我正在开发一个应用程序,我正在使用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异常崩溃。这不是问题。问题在于地图。

在此之后我走到了同一点,即使使用示例应用程序,我也遇到了同样的问题。地图崩溃,在活动处于后台后,它无法再次初始化。

任何建议都表示赞赏:)

1 个答案:

答案 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"));

感谢您的时间:)