如果我發出了一個敬酒時,我的應用程序的活動是不是在前臺則舉杯仍然會顯示在屏幕上。當我的應用在後臺運行時,如何防止我的敬酒顯示出來。即目前沒有其活動顯示出來。想隱藏的Android敬酒時,應用程序在後臺
我想,我必須以某種方式檢測到我的活動沒有被顯示的活性,當真正的不發出任何祝酒詞;但我如何檢測這種情況?
感謝
如果我發出了一個敬酒時,我的應用程序的活動是不是在前臺則舉杯仍然會顯示在屏幕上。當我的應用在後臺運行時,如何防止我的敬酒顯示出來。即目前沒有其活動顯示出來。想隱藏的Android敬酒時,應用程序在後臺
我想,我必須以某種方式檢測到我的活動沒有被顯示的活性,當真正的不發出任何祝酒詞;但我如何檢測這種情況?
感謝
設置當您的應用程序在後臺運行(在即)一個標誌,如果設置了標誌,不發出祝酒。
如果你有很多活動,你可以定義你自己的Activity
基類,它包裝了這個功能。
您是否嘗試過設置一個變量或一些指示燈,當onPause()
方法被調用該活動以表示其已投入的背景下,然後打開該指示燈熄滅時onResume()
叫?
然後讓如果所述指示符是關閉該烤麪包發生。
+1 ......沒有錯,是第二位:) – EboMike 2011-01-20 03:12:30
在我的應用程序中,當應用程序進入後臺時,排隊等待的敬酒一次又一次出現,所以我沒有按照以下方式解決問題。當應用程序進入後臺檢測
添加代碼。註冊生命週期處理程序的一種方法。對於更多細節ref
registerActivityLifecycleCallbacks(new MyLifecycleHandler());
App.inBackground = true;
當應用程序被切換到後臺,並使用SmartToast類
public class SmartToast {
static ArrayList<WeakReference<Toast>> toasts = new ArrayList<>();
public static void showToast(@NonNull Context context,@NonNull String message){
//this will not allowed to show toast when app in background
if(App.inBackground) return;
Toast toast = Toast.makeText(context,message,Toast.LENGTH_SHORT);
toasts.add(new WeakReference<>(toast));
toast.show();
//clean up WeakReference objects itself
ArrayList<WeakReference<Toast>> nullToasts = new ArrayList<>();
for (WeakReference<Toast> weakToast : toasts) {
if(weakToast.get() == null) nullToasts.add(weakToast);
}
toasts.remove(nullToasts);
}
public static void cancelAll(){
for (WeakReference<Toast> weakToast : toasts) {
if(weakToast.get() != null) weakToast.get().cancel();
}
toasts.clear();
}
}
呼叫時應用進入後臺以隱藏當前和所有未決的祝酒詞SmartToast.cancelAll();
方法顯示敬酒。代碼很有趣。請享用!
+1拉去4秒;) – 2011-01-20 03:05:17