Проблема обновления параллелизма / пользовательского интерфейса при запуске операции - PullRequest
2 голосов
/ 25 августа 2011

У меня есть действие, которое при запуске (onCreate или onStart) должно манипулировать некоторыми представлениями, а затем возможно немедленно запускает другое действие (промежуточное объявление в своей собственной активности).

Кажется, есть проблема с порядком / параллелизмом: рекламная активность открывается, а затем манипулирующее представление R.id.productlist_filterbar из предыдущего действия рисуется поверх промежуточной рекламной активности.

(Упрощенный) код:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.productlist);

    // Do some init stuff ..

    // Manipulate the GUI
    findViewById(R.id.productlist_filterbar).setVisibility(View.VISIBLE);

    // If executed, then a new intent is fired in here to open the interstitial ad
    if (..we have an ad..) {            
        Intent i  = new Intent(this, AdViewActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivity(i);               
        overridePendingTransition(R.anim.fadein, 0);            
    }

}

Что происходит, когда я вызываю startActivity (), пока еще есть ожидающие изменения графического интерфейса?

И что было бы лучшим решением для этого случая?

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 25 августа 2011

Я бы установил флаг в onAttachedToWindow() обратном вызове, а затем проверил бы этот флаг в onWindowFocusChanged(), если установлен, затем запустите рекламную активность и сбросьте флаг.

void onAttachedToWindow() {
    mFlag = true;
}

void onWindowFocusChanged(boolean hasFocus) {
     if (hasFocus && mFlag) {
        // start ad activity.

        mFlag = false;
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...