Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果用户正在使用应用程序,那么如何停止显示通知?_Java_Android_Android Notifications - Fatal编程技术网

Java 如果用户正在使用应用程序,那么如何停止显示通知?

Java 如果用户正在使用应用程序,那么如何停止显示通知?,java,android,android-notifications,Java,Android,Android Notifications,我正在设计一款使用通知的android应用程序。 在此之前,我使用的是全屏活动,因此如果在全屏视图中收到通知,我不会收到任何警报。 现在我正在使用启用通知的空白活动。 当我已经在应用程序(如skype)中时,我不想显示通知。 否则,我想在闪烁后立即取消它们。 如何做到这一点 提前感谢。您可以为所有活动定义一个超类,并跟踪应用程序的状态。如果所有活动都处于停止状态-应用程序在后台,否则-在前台。在超级活动的onStart()和onStop()方法中,您可以增加和减少可见活动的数量 public c

我正在设计一款使用通知的android应用程序。
在此之前,我使用的是全屏活动,因此如果在全屏视图中收到通知,我不会收到任何警报。
现在我正在使用启用通知的空白活动。
当我已经在应用程序(如skype)中时,我不想显示通知。
否则,我想在闪烁后立即取消它们。
如何做到这一点


提前感谢。

您可以为所有活动定义一个超类,并跟踪应用程序的状态。如果所有活动都处于停止状态-应用程序在后台,否则-在前台。在超级活动的
onStart()
onStop()
方法中,您可以增加和减少可见活动的数量

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        sVisibleActivitiesCount--;
    }

    public static boolean isAppInForeground() {
        return sVisibleActivitiesCount > 0;
    }
}
现在,如果
superactive.isappingforeground
返回true,您可以在某处检查应用程序状态,而不创建通知


第二种方法是使用(MINAPI14)来监视活动生命周期,并在单个位置跟踪应用程序状态,而不必为所有活动创建一个超类。因此,如果你的应用程序有minSdkVersion=“14”,我宁愿使用这种方法。你可以为你的所有活动定义一个超类,并跟踪应用程序的状态。如果所有活动都处于停止状态-应用程序在后台,否则-在前台。在超级活动的
onStart()
onStop()
方法中,您可以增加和减少可见活动的数量

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        sVisibleActivitiesCount--;
    }

    public static boolean isAppInForeground() {
        return sVisibleActivitiesCount > 0;
    }
}
现在,如果
superactive.isappingforeground
返回true,您可以在某处检查应用程序状态,而不创建通知


第二种方法是使用(MINAPI14)来监视活动生命周期,并在单个位置跟踪应用程序状态,而不必为所有活动创建一个超类。因此,如果你的应用程序有minSdkVersion=“14”,我宁愿使用这种方法。你可以为你的所有活动定义一个超类,并跟踪应用程序的状态。如果所有活动都处于停止状态-应用程序在后台,否则-在前台。在超级活动的
onStart()
onStop()
方法中,您可以增加和减少可见活动的数量

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        sVisibleActivitiesCount--;
    }

    public static boolean isAppInForeground() {
        return sVisibleActivitiesCount > 0;
    }
}
现在,如果
superactive.isappingforeground
返回true,您可以在某处检查应用程序状态,而不创建通知


第二种方法是使用(MINAPI14)来监视活动生命周期,并在单个位置跟踪应用程序状态,而不必为所有活动创建一个超类。因此,如果你的应用程序有minSdkVersion=“14”,我宁愿使用这种方法。你可以为你的所有活动定义一个超类,并跟踪应用程序的状态。如果所有活动都处于停止状态-应用程序在后台,否则-在前台。在超级活动的
onStart()
onStop()
方法中,您可以增加和减少可见活动的数量

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        sVisibleActivitiesCount--;
    }

    public static boolean isAppInForeground() {
        return sVisibleActivitiesCount > 0;
    }
}
现在,如果
superactive.isappingforeground
返回true,您可以在某处检查应用程序状态,而不创建通知


第二种方法是使用(MINAPI14)来监视活动生命周期,并在单个位置跟踪应用程序状态,而不必为所有活动创建一个超类。因此,如果你的应用程序有minSdkVersion=“14”,我宁愿使用这种方法。你可以尝试获取正在运行的进程列表,并检查前台的进程是否是你的应用程序

private boolean isAppInForeground() {

    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> mRunningProcesses = mActivityManager
            .getRunningAppProcesses();
    Iterator<RunningAppProcessInfo> i = mRunningProcesses.iterator();
    while (i.hasNext()) {
        RunningAppProcessInfo runningAppProcessInfo = i.next();

        if (runningAppProcessInfo.uid == getApplicationInfo().uid && runningAppProcessInfo.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) 
            {
                return true;
           }
       }
    return false;
}
私有布尔值(){
ActivityManager MacActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
列表mrrunningprocesss=mActivityManager
.getRunningAppProcesses();
迭代器i=mrunningprocesss.Iterator();
while(i.hasNext()){
RunningAppProcessInfo RunningAppProcessInfo=i.next();
if(runningAppProcessInfo.uid==getApplicationInfo().uid&&runningAppProcessInfo.maintity==runningAppProcessInfo.maintity\u前台)
{
返回true;
}
}
返回false;
}

您可以尝试获取正在运行的进程列表,并检查前台的进程是否是您的应用程序

private boolean isAppInForeground() {

    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> mRunningProcesses = mActivityManager
            .getRunningAppProcesses();
    Iterator<RunningAppProcessInfo> i = mRunningProcesses.iterator();
    while (i.hasNext()) {
        RunningAppProcessInfo runningAppProcessInfo = i.next();

        if (runningAppProcessInfo.uid == getApplicationInfo().uid && runningAppProcessInfo.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) 
            {
                return true;
           }
       }
    return false;
}
私有布尔值(){
ActivityManager MacActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
列表mrrunningprocesss=mActivityManager
.getRunningAppProcesses();
迭代器i=mrunningprocesss.Iterator();
while(i.hasNext()){
RunningAppProcessInfo RunningAppProcessInfo=i.next();
if(runningAppProcessInfo.uid==getApplicationInfo().uid&&runningAppProcessInfo.maintity==runningAppProcessInfo.maintity\u前台)
{
返回true;
}
}
返回false;
}

您可以尝试获取正在运行的进程列表,并检查前台的进程是否是您的应用程序

private boolean isAppInForeground() {

    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> mRunningProcesses = mActivityManager
            .getRunningAppProcesses();
    Iterator<RunningAppProcessInfo> i = mRunningProcesses.iterator();
    while (i.hasNext()) {
        RunningAppProcessInfo runningAppProcessInfo = i.next();

        if (runningAppProcessInfo.uid == getApplicationInfo().uid && runningAppProcessInfo.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) 
            {
                return true;
           }
       }
    return false;
}
私有布尔值(){
ActivityManager MacActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
列表mrrunningprocesss=mActivityManager
.getRunningAppProcesses();
迭代器i=mrunningprocesss.Iterator();
while(i.hasNext()){
RunningAppProcessInfo RunningAppProcessInfo=i.next();
if(runningAppProcessInfo.uid==getApplicationInfo().uid&&runningAppProcessInfo.maintity==runningAppProcessInfo.maintity\u前台)
{
返回true;
}
}
返回false;
}

您可以尝试获取正在运行的进程列表,并检查前台的进程是否是您的应用程序

private boolean isAppInForeground() {

    ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> mRunningProcesses = mActivityManager
            .getRunningAppProcesses();
    Iterator<RunningAppProcessInfo> i = mRunningProcesses.iterator();
    while (i.hasNext()) {
        RunningAppProcessInfo runningAppProcessInfo = i.next();

        if (runningAppProcessInfo.uid == getApplicationInfo().uid && runningAppProcessInfo.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) 
            {
                return true;
           }
       }
    return false;
}
私有布尔值(){
ActivityManager MacActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
列表mrrunningprocesss=mActivityManager
.getRunningAppProcesses();
迭代器i=mrunningprocesss.Iterator();
而(i.h