如果我发出了一个敬酒时,我的应用程序的活动是不是在前台则举杯仍然会显示在屏幕上。当我的应用在后台运行时,如何防止我的敬酒显示出来。即目前没有其活动显示出来。想隐藏的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