在Android上加载应用程序?

时间:2014-11-06 09:53:48

标签: android performance

您好我创建的图像应用程序和工作正常。然而,出现了一些小错误。一个是当在Launcher上单击应用程序图标时,它会冻结并有时会变为黑屏。但有时它会快速而正确地加载。它是随机发生的。

因此,当它正常加载或冻结应用程序并在加载前变为黑色时,我会看到GC运行如何防止此行为。

我已经定义了我的应用程序,该应用程序扩展了Application类,因此在启动器活动冻结屏幕之前调用Application。

以下是我在应用程序中的代码:

public class WallieApplication extends Application implements WallieConstants,
        WallieParseConstants, WallieSharedPreferencesConstant {

    @Override
    public void onCreate() {
        try {
            super.onCreate();
            /**
             * Call to enable Local Data Storage.
             */
            Log.i("Debug", "Enable Local Datastore Parse");
            Parse.enableLocalDatastore(this);
            Log.i("Debug", "Initialize Parse");
            Parse.initialize(getApplicationContext(), PARSE_APPLICATION_ID,
                    PARSE_CLIENT_KEY);

            try {
                Crashlytics.start(this);
                Helpshift.install(this, HELPSHIFT_API_KEY, HELPSHIFT_DOMAIN,
                        HELPSHIFT_APP_ID);
            } catch (Exception e) {
                Crashlytics.log(e.getMessage());
            }
            Log.i("Debug", "Enable Push Callback");

            PushService.setDefaultPushCallback(getApplicationContext(),
                    HomeScreenActivity.class);
            Log.i("Debug", "Enable Push Callback Done");
        } catch (Exception e) {
            Crashlytics.log(e.getMessage());
        }
    }

}

我看到的是当我关闭应用程序时,我看到这个代码中的日志打印在logcat上。如果他们打印我观察它冻结app?

2 个答案:

答案 0 :(得分:0)

查看在活动出现之前执行的OnCreate和其他活动生命周期方法中的耗时任务,并将所有耗时的代码作为异步任务移至后台线程,例如

答案 1 :(得分:0)

我假设您在UI线程上做了很多工作。这可能会导致不同的行为,具体取决于设备。要检查这是否是您正面临的问题,请查看以下文章:

http://android-developers.blogspot.ch/2010/12/new-gingerbread-api-strictmode.html

可能是因为你在启动时加载了很多图像。您必须加载它们异步以避免这样的问题。有很多图书馆可以帮助您,即http://square.github.io/picasso/