我是android新手。我已经开发了可在应用程序启动时启动服务的android应用程序。
我所拥有的: 当前,当应用程序启动时,它将在通知区域中创建粘性通知,如屏幕截图所示。
服务源代码:
public class InfiniteService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Intent notificationIntent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getString(R.string.app_name))
.setContentText("Welcome To TestApp")
.setContentIntent(pendingIntent).build();
startForeground(1337, notification);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Log.e("InfiniteService", "Service started");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
//Log.e("InfiniteService", "onDestroy");
sendBroadcast(new Intent("InfiniteService"));
}
我想要的东西: 我想摆脱通知区域中的此粘性通知。相反,我希望服务在后台连续运行。
我尝试过的方法:
我尝试在onStartCommand中“返回START_NON_STICKY”,最初的印象是它将删除粘性通知,但后来从 here 获悉,START_STICKY告诉操作系统在此之后重新创建服务有足够的内存
我怀疑PendingIntent正在这样做,但是在阅读explanation之后,再次知道这不是我想要的。
然后我搜索了如何在android中创建粘性通知,以期获得一些提示。阅读 this 文章后,了解标记使其具有粘性。我在整个代码中搜索了“ Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT”,但未找到任何内容。
我想念什么?任何指针/帮助都很好。谢谢。
答案 0 :(得分:0)
按照这篇文章中描述的说明进行操作:
if constexpr
对我有用。