[英]Android: Dismissing popup window in onPause when it's created in a separate method
我的代碼中有一個單獨的方法可以創建一個彈出窗口:
private void showPopup(final Activity context, int[] buttonLocation) {
// CREATE POPUP HERE NAMED popup
// Display popup for 600ms (it's a popup with an animation)
final Timer t1 = new Timer();
TimerTask titty1 = new TimerTask(){
public void run(){
Romp.this.runOnUiThread(new Runnable() {
@Override
public void run() {
popup.dismiss();
t1.cancel();
t1.purge();
}
});
}
};
t1.schedule(titty1, 600);
}
當我關閉代碼中其他位置的活動,並嘗試返回到上一個活動時,出現“泄漏的窗口”錯誤,表明我需要關閉彈出窗口。 我在上面顯示的計時器中關閉了彈出窗口,但是,代碼的另一部分可以觸發活動同時結束。
我希望能夠在銷毀/暫停時執行以下操作:
@Override
public void onDestroy() {
ACTIVITY.this.finish();
eraseData();
popup.dismiss();
super.onDestroy();
}
有沒有辦法可以消除在單獨方法中創建的onDestroy / pause彈出窗口?
呼叫-
titty1.cancel(true);
t1.cacncel();
根據您的用例/需求在onPause()
/ onDestroy()
。
class Test{
private final Timer t1 = new Timer();
private TimerTask titty1=null;
private void showPopup(final Activity context, int[] buttonLocation) {
// CREATE POPUP HERE NAMED popup
// Display popup for 600ms (it's a popup with an animation)
titty1 = new TimerTask(){
public void run(){
Romp.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if(!alive)
return;
popup.dismiss();
t1.cancel();
t1.purge();
}
});
}
};
t1.schedule(titty1, 600);
}
@Override
public void onDestroy() {
alive=false;
ACTIVITY.this.finish();
eraseData();
popup.dismiss();
titty1.cancel(true);
t1.cancel();
super.onDestroy();
}
}
窗口泄漏的原因是它沒有與它鏈接的活動同步,並且在活動關閉時沒有關閉。 因此,在訪問UI元素時最好確保活動處於活動狀態。
boolean alive=true;
@Override public void onDestroy() {
alive=false;
ACTIVITY.this.finish();
eraseData();
popup.dismiss();
super.onDestroy(); }
private void showPopup(final Activity context, int[] buttonLocation) {
// CREATE POPUP HERE NAMED popup
// Display popup for 600ms (it's a popup with an animation)
final Timer t1 = new Timer();
TimerTask titty1 = new TimerTask(){
public void run(){
Romp.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if(!alive)
return;
popup.dismiss();
t1.cancel();
t1.purge();
}
});
}
};
t1.schedule(titty1, 600);
}
創建彈出窗口之前,請遵循相同的步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.