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