Android判斷app是否後臺執行中,後臺執行通知欄提示
在做隨緣吧的過程中,當用戶收到有緣人發過來的訊息時,如果隨緣app沒有在前臺開啟,需要提醒使用者有新的訊息。這個如何實現呢?
首先,需要判斷當前app是否在後臺執行,程式碼如下:
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses
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;
}
}
returnfalse;
}
然後,在通知欄顯示提示內容:
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());
}