3

当我长按主页按钮并终止我的应用程序时,通知已从状态栏中删除,但我想在应用程序终止时保留它,当应用程序终止时如何在状态栏上保留通知?

4

3 回答 3

0

您的通知需要由在我关闭的活动后仍然存在的东西拥有,例如Service. 创建一个Service管理您的通知的小程序。您的活动可以向服务发送意图,或绑定到服务并直接通过连接调用方法,以修改通知的状态。

我在移动设备上,因此无法轻松构建示例...敬请期待。^_^

于 2016-02-27T22:12:06.527 回答
0

你可以做的是使用:

开始前景()

注意:如果终止您的服务会对用户造成干扰,您可以设置此标志,例如您的服务正在执行背景音乐播放,这样用户会注意到他们的音乐是否停止播放。

示例 1

示例 2

并停止这种使用:

停止前景()

注意:将此服务从前台状态中删除,如果需要更多内存,可以将其终止。

希望这可以帮助你。

于 2016-02-26T08:33:42.657 回答
0

activity在或fragment您想要通知服务的地方创建如下所示的方法。然后在那里调用这个方法。

private void buildNotification(){

    Intent intent = new Intent(getActivity(), NotificationReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);

    AlarmManager am = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, myCalendar.getTimeInMillis(), pendingIntent);
}

现在创建一个NotificationReceiver.class扩展BroadcastReceiver如下的类(这里我创建了)。

public class NotificationReceiver extends BroadcastReceiver{

private static final int NOTIFICATION_ID = 1991;

@Override
public void onReceive(Context context, Intent intent) {

    int num = 0;

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

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_ONE_SHOT);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setSmallIcon(R.drawable.ic_notifications_black_24dp);
    builder.setContentTitle("your title.");
    builder.setContentText("your text.");
    builder.setContentIntent(pendingIntent);
    builder.setTicker("ticker text.");
    builder.setAutoCancel(true);
    builder.setOnlyAlertOnce(true);
    builder.setDefaults(Notification.DEFAULT_ALL);
    builder.setNumber(++num);

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(NOTIFICATION_ID, builder.build());
    }
}

这将解决您的问题。

更新

我忘了提到您还必须添加receiver.AndroidManifest.xml

<receiver android:name=".NotificationReceiver"/>

即你必须把你的class文件receiver

于 2016-02-26T09:10:06.020 回答