1
我創建了一個遊戲,我在其中旋轉了多個活動。每個活動只停留幾秒鐘。現在我應該在遊戲中添加廣告。由於在幾秒鐘後廣告刷新沒有意義,因此即使我開始新的活動,我也必須創建一個始終保持活動狀態的視圖。在切換活動時保持視圖活躍
由於視圖綁定到活動(?),因此可能無法進行。所以我想知道是否有另一種解決方案可以在內容視圖旋轉時保持adView活着。
在此先感謝。
編輯: 下面是一個簡單的活動也就是活動週期的一部分: 公共類懲治擴展ActivityWithSound實現OnClickListener {
@SuppressWarnings("unused")
private final String TAG = "Punish";
private RelativeLayout buttonContainer;
private ImageView bgImg;
private TextView nameTxt;
private TextView questTxt;
private Button mainMenuBtn;
private Button okBtn;
private Bundle bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
bundle = getIntent().getExtras();
if(bundle == null)
bundle = StbApp.getTempBundle();
setContentView(R.layout.quest);
setupView();
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
soundtrack.startFX(R.raw.fx_execution);
super.onResume();
}
@Override
protected void onPause() {
StbApp.getTempBundle().putInt(Victim.VICTIM, bundle.getInt(Victim.VICTIM));
soundtrack.stopAllFX();
super.onPause();
}
@Override
public void onClick(View view) {
if (view == mainMenuBtn){
//TODO Continue Function
Intent intent = new Intent(this, TitleScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
StbApp.setContinueBtn(true);
StbApp.getLastActivity().setClass(this, Punish.class);
startActivity(intent);
}
if (view == okBtn){
if (StbApp.getPenalty() == PenaltyType.LEAVE){
StbApp.getPlayer().remove(bundle.getInt(Victim.VICTIM));
StbApp.setNumberOfPlayer(StbApp.getNumberOfPlayer()-1);
}
if (StbApp.getNumberOfPlayer() == 2 && StbApp.getPenalty() == PenaltyType.LEAVE)
startActivity(new Intent(this, GameOver.class));
else {
startActivity(new Intent(this, Round.class));
}
}
}
@Override
public void onBackPressed() {
return;
}
private void setupView() {
float textSize = (float) getResources().getDimension(R.dimen.standard_text_size)/getResources().getDisplayMetrics().scaledDensity;
buttonContainer = (RelativeLayout) findViewById(R.id.container_button);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) findViewById(R.id.container_button).getLayoutParams();
params.setMargins(0, 0, 0, (int) (StbApp.AdHeight*1.3));
buttonContainer.setLayoutParams(params);
bgImg = (ImageView) findViewById(R.id.imgv_girl);
Log.d(TAG, "PlayerSize " + StbApp.getPlayer().size());
nameTxt = (TextView) findViewById(R.id.text_victim_name);
Log.d(TAG, "PlayerSize " + StbApp.getPlayer().size());
Log.d(TAG, "PlayerIndex bundle.getInt(Victim.VICTIM) " + bundle.getInt(Victim.VICTIM));
nameTxt.setText(StbApp.getPlayer().get(bundle.getInt(Victim.VICTIM)).getName());
nameTxt.setTextSize(textSize);
questTxt = (TextView) findViewById(R.id.text_quest);
switch (StbApp.getPenalty()) {
case LEAVE:
questTxt.setText(getResources().getString(R.string.punish_leave));
break;
case DRNK:
questTxt.setText(getResources().getString(R.string.punish_drink));
break;
case UNDRESS:
questTxt.setText(getResources().getString(R.string.punish_undress));
break;
}
questTxt.setTextSize(textSize);
mainMenuBtn = (Button) findViewById(R.id.button_mainmenu);
mainMenuBtn.setOnClickListener(this);
okBtn = (Button) findViewById(R.id.button_ok);
okBtn.setOnClickListener(this);
}
@Override
protected void onDestroy() {
if (bgImg.getDrawable() != null){
bgImg.getDrawable().setCallback(null);
bgImg.setImageDrawable(null);
}
super.onDestroy();
}
我需要什麼將是onDestroy
,和onResume
的替代品。
首先感謝您的答案。 我有一個內存泄漏,並藉助意圖'CLEAR_TOP'和'onDestroy'方法解決了它。此外,我保存活動的狀態,因爲我可以隨時返回到菜單並稍後恢復遊戲。 如果我使用'ViewSwitcher' /'ViewFlipper'有沒有像'ViewSwichterListener','OnViewChange'等?那麼它可能不是那麼多的工作。不幸的是我找不到像這樣的東西。 – Xazen
根據你想要一個可能的ViewSwitcherListener,OnViewChange等來做什麼,它只能在持有ViewSwitcher/ViewFlipper的Activity中實現。由於您沒有發佈任何代碼示例,因此很難說哪些更好,哪些不更好。 – kaspermoerch
我在代碼中添加了代碼示例。我打算嘗試onFocusChange(),因爲它獲得了參數:'v':狀態已更改的視圖。 - 'hasFocus' v。 的新焦點狀態但我還沒有測試過任何東西。 – Xazen