Grow heap (frag case) to 20.188MB на SplashScreen ...

Рейтинг: 0Ответов: 1Опубликовано: 07.03.2015

Почему на первой же Activity grow heap 20MB+...??

Обычный SplashScreen с фоном и картинкой по центру (из hdmi)...

Общий размер папки /res/ 1.5MB...

alt text

Код активити:

public class Start extends Activity {

final String MY_SETTINGS = "my_settings";

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_layout);

        Thread logoTimer = new Thread()
        {
            public void run()
            {
                try
                {
                    int logoTimer = 0;
                    while(logoTimer < 3000)
                    {

                        sleep(100);
                        logoTimer = logoTimer +100;

                    }

                    SharedPreferences sPref = getSharedPreferences(MY_SETTINGS, Context.MODE_PRIVATE);


                    String userName = sPref.getString("userName", "");

                    // Если пользователь не авторизировался ни разу - показать авторизацию
                    if (userName.equals("")) {
                        startActivity(new Intent(Start.this,
                                      ActivitySelectNameAndRegion.class));
                    // Если пользователь уже авторизировался (пропуск авторизации)
                    } else {
                        startActivity(new Intent(Start.this,
                                      ActivityChooseCategory.class));
            }
                }
                catch (InterruptedException e)
                {
                    // TODO: автоматически сгенерированный блок catch.
                    e.printStackTrace();
                }
                finally
                {
                    finish();
                }
            }
        };
        logoTimer.start();
  }
}

Логи с Android-Studio:

alt text

Ответы

▲ 1Принят
    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent intent = new Intent(SplashScreenActivity.this, MainTabBarActivity.class);
            finish();
            startActivity(intent);
            overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out);
        }
    }, DELAY);
}
или вот так

        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);
        new Thread() {
            @Override
            public void run() {
                try {
                    synchronized (this) {
                        wait(time);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    launchActivity();
                }
            }
        }.start();
    }

И только в секции finally сделать все проверки и вызов активити или finish.

А лог же не показывает какой-либо Exception, там отладочная информация, скорее всего, картинка большого размера.