如何在应用程序closures时获取android通知?

从webserivce我得到的date和时间的forms的数据,意味着某些特定的date,我有一些插槽集。 下图给出了详细的解释。 在这里输入图像说明

这里每个date我有一些设置时间。 在这里,我想要的是在特定的date和时间显示通知。 如果数据库的响应包含明天的date,如2012年12月7日上午11:00。 我当时需要显示通知。

关于通知pipe理器和我正在使用的代码,我有一些想法..

Main.java

NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_action_search, "A New Message!", System.currentTimeMillis()); Intent notificationIntent = new Intent(this, Main.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(Main.this, notificationTitle, notificationMessage, pendingIntent); notificationManager.notify(10001, notification); 

但是在这里,我也需要在应用程序closures时收到通知。 所以,任何人都可以帮助我。

添加(启动) Service到您的应用程序。 即使用户放弃了您的应用程序,该服务仍然会在后台运行。

此外,你可以实现一个BroadcastReceiver,将听取电话的意图,让您的服务在手机启动时启动!

MyService.java

 public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId){ // START YOUR TASKS return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // STOP YOUR TASKS super.onDestroy(); } @Override public IBinder onBind(Intent intent){ return null; } 

BootReceiver.java

 public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { Intent serviceIntent = new Intent("your.package.MyService"); context.startService(serviceIntent); } } } } 

AndroidManifest.xml中

//在清单标签中

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

//在你的应用程序标签中

 <service android:name=".MyService"> <intent-filter> <action android:name="your.package.MyService" /> </intent-filter> </service> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true" android:label="BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

如果你想从一个活动开始你的服务,只需使用

 private boolean isMyServiceRunning() { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (MyService.class.getName().equals(service.service.getClassName())) { return true; } } return false; } if (!isMyServiceRunning()){ Intent serviceIntent = new Intent("your.package.MyService"); context.startService(serviceIntent); } 

如果数据来自您的服务器,那么使用GCM可能是一个好方法。 在这种情况下,服务器将能够唤醒/启动您的应用程序。

创build一个在你的情况下不断运行的服务是一个糟糕的解决scheme。 IMO更好的方法是使用AlarmManager 。 警报pipe理器将在特定的时间调用意图。 (请注意,如果电话重新启动,您必须再次注册意向)。