Android判断app是否后台运行中,后台运行通知栏提示

25 篇文章 0 订阅
13 篇文章 0 订阅

在做随缘吧的过程中,当用户收到有缘人发过来的消息时,如果随缘app没有在前台打开,需要提醒用户有新的消息。这个如何实现呢?


首先,需要判断当前app是否在后台运行,代码如下:

public static boolean isBackground(Context context) {

        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

        List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();

        if (appProcesses.size() > 0) {

            RunningAppProcessInfo appProcess = appProcesses.get(0); // 判断第一个是不是自己的应用就可以了

            if (appProcess.processName.equals(context.getPackageName())) {

                Log.i("前台", appProcess.processName);

                return false;

            } else {

                Log.i("后台", appProcess.processName);

                return true;

            }


        }

        return false;

    }


然后,在通知栏显示提示内容:

private void addNotificaction(Context context, String title, String message) {

        String ns = Context.NOTIFICATION_SERVICE;

        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);

        mBuilder.setContentTitle(title).setContentText(message)

                .setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL, context)) // 设置通知栏点击意图

                .setTicker("来自随缘吧www.suiyuan521.com的缘分") // 通知首次出现在通知栏,带上升动画效果的

                .setWhen(System.currentTimeMillis())// 通知产生的时间,会在通知信息里显示,一般是系统获取到的时间

                .setPriority(Notification.PRIORITY_DEFAULT) // 设置该通知优先级

                .setAutoCancel(true)// 设置这个标志当用户单击面板就可以让通知将自动取消

                .setOngoing(false)// ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)

                .setDefaults(Notification.DEFAULT_VIBRATE)// 向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合

                // Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission

                .setSmallIcon(R.drawable.ic_launcher);// 设置通知小ICON


        mBuilder.setAutoCancel(true).setContentTitle(title).setContentText(message).setTicker("来自随缘吧www.suiyuan521.com的缘分");

        Intent resultIntent = new Intent(context, MainActivity.class);

        resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

        PendingIntent pendingIntent =

                PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        mBuilder.setContentIntent(pendingIntent);

        mNotificationManager.notify(100, mBuilder.build());

    }



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统为了优化功耗和资源管理,会在一定条件下限制后台运行的应用。但是,如果我们开发的应用需要在后台长时间运行,可以通过以下几种方法来实现: 1. 前台服务(Foreground Service):前台服务是一种优先级较高的服务,可以将应用置于可见状态,使其在后台长时间运行。通过在service的onCreate方法调用startForeground方法,将服务设置为前台服务,同时在通知显示一个通知,以提醒用户该服务正在运行。 2. jobScheduler:JobScheduler是一种用于调度后台任务执行的系统服务。通过创建一个JobScheduler任务,指定任务的执行条件和周期,系统会在合适的时间执行任务。可以使用setPersisted方法来设置任务在设备重启后继续执行。 3. WorkManager:WorkManager是一个用于管理后台任务调度的库。可以使用WorkManager来执行需要在后台长时间运行的任务,并且提供了灵活的任务调度和管理功能。WorkManager利用了JobScheduler或AlarmManager来实现后台任务的调度,并且可以保证任务的持久性。 4. AlarmManager:AlarmManager是一种能够在指定时间触发特定操作的系统服务。我们可以使用AlarmManager来设置一个定时的任务,利用setRepeating方法来指定任务的循环周期。 需要说明的是,为了提高用户体验和遵守系统限制,我们在使用这些方法时,需要合理设置任务的优先级,避免对系统资源的滥用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值