启动活动时的并发/ UI更新问题

时间:2011-08-25 18:19:09

标签: android user-interface concurrency

我有一个活动,在启动时(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);            
    }

}

当还有未决的GUI修改时,当我调用startActivity()时会发生什么?

而且,这个案例的最佳解决方案是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我会在onAttachedToWindow()回调中设置一个标记,然后在onWindowFocusChanged()中检查此标记是否已设置,然后启动广告活动并重置标记。

void onAttachedToWindow() {
    mFlag = true;
}

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

        mFlag = false;
     }
 }