2014-10-08 61 views
0

我有一項服務在特定的時間顯示通知,並且有一個broadcastreceiver用於啓動此服務。當應用程序啓動時,服務啓動並顯示通知並顯示設備上運行的應用程序中的服務,但有時在運行的應用程序服務中是重新啓動並且不顯示消息。如何防止在Android中重新啓動服務?

我的服務代碼是:

public class NotificationService extends Service { 
private boolean flag=false; 
public static NotificationCompat.Builder mBuilder; 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Timer timer=new Timer(); 
    final Context context=getApplicationContext(); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      if(CheckTime()){ 
       //Intent intent = new Intent(context, NotificationReciver.class); 
       //sendBroadcast(intent); 
       showNotification(); 
      } 
     } 
    },0,(1000*60)); 

    return START_NOT_STICKY; 
} 

private boolean CheckTime(){ 
    final Context context=getBaseContext(); 
    Calendar calendar=Calendar.getInstance(); 
    int hour=calendar.get(Calendar.HOUR_OF_DAY); 
    int minute=calendar.get(Calendar.MINUTE); 

    if(hour==16 && minute==11){ 
     return true; 
    }else { 
     return false; 
    } 
} 

private void showNotification() { 
    Context context=getApplicationContext(); 
    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    Intent intent=new Intent(context, QuestionActivity.class); 
    PendingIntent pendingIntent=PendingIntent.getActivity(context,0,intent,0); 

    mBuilder = new NotificationCompat.Builder(context). 
      setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("Feelinger") 
      .setContentText("How are you feeling today?") 
      .setSound(alarmSound) 
      .setContentIntent(pendingIntent) 
      .setAutoCancel(true) 
      .setVibrate(new long[]{300, 200, 200, 200}); 

    android.app.NotificationManager mNotificationManager = (android.app.NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    mNotificationManager.notify(100, mBuilder.build()); 
} 

和廣播接收器的代碼是:

public class NotificationManager extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    context.startService(new Intent(context,NotificationService.class)); 
} 

如何解決這個問題呢?

+0

發佈我們的代碼,或讓我們知道確切的問題 – 2014-10-08 13:43:29

回答

0

寫內部服務

@Override 
public int onStartCommand (Intent intent, int flags, int startId) 
{ 
    return START_NOT_STICKY; 
} 
+0

我回到START_NOT_STICKY但不顯示在運行過程中出現的應用程序服務,不顯示通知 – 2014-10-08 13:48:05

相關問題