我有一个活动,该活动在启动时(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()会发生什么?

而且,对于这种情况最好的解决方案是什么?

谢谢你的帮助!

最佳答案

我会在onAttachedToWindow()回调中设置一个标志,然后在onWindowFocusChanged()中检查该标志(如果已设置),然后启动广告活动并重置该标志。

void onAttachedToWindow() {
    mFlag = true;
}

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

        mFlag = false;
     }
 }

07-24 09:29