我有一个坐标列表(30多对经度 - 纬度),我的任务如下:
我应该创建一个Android应用程序,如果他/她在我的列表包含的30个位置之一,则会向用户发送通知(在状态栏上)。通知部分准备就绪,我可以在一个活动中执行此操作(遍历列表,如果坐标相等,则发送通知,但我如何为所有活动执行此操作,以及应用程序在缓存中的那些时间,但是不开放?谢谢
Intent intent = new Intent(AGPS.this, SecondClass.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(AnotherGPS.this);
stackBuilder.addParentStack(SecondClass.class);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent
.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
(NotificationCompat.Builder) new NotificationCompat.Builder(AnotherGPS.this)
.setSmallIcon(R.drawable.cam_icon)
.setContentTitle("My notification")
.setContentText("content of notification")
.setContentIntent(pendingIntent);
NotificationManager NM = (NotificationManager) getSystemService(Context
.NOTIFICATION_SERVICE);
NM.notify(0, mBuilder.build());
答案 0 :(得分:0)
如果您在api26下方建设,您可以使用后台服务来监听位置更改,前提是您的应用程序已获得许可并且移动设备位于
启动api 26服务将无法以这种方式运行,并且您很可能会遇到一些例外情况,因为您需要执行后台任务https://developer.android.com/about/versions/oreo/android-8.0-changes.html#abll
答案 1 :(得分:0)
您需要在服务中而不是在活动中执行此操作 看看这个 https://stackoverflow.com/a/46025303/4705092
在onLocationChanged
比较位置,如果它适合您,请致电通知部分