2017-02-21 95 views
-1
public class FirstService extends Service { 

    private static String TAG = "Service"; 
    Boolean isLoggedIn; 
    SharedPreferences sharedPreferences; 


    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 

     return null; 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     // TODO Auto-generated method stub 
     super.onStart(intent, startId); 
     Log.d(TAG, "FirstService started"); 
     sharedPreferences = getSharedPreferences(getPackageName(), MODE_PRIVATE); 
     isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false); 
     if(isLoggedIn){ 
      Intent intent1 = new Intent(this,MyFirebaseMessagingService.class); 
      startService(intent1); 
     } 
     else 
     { 
      stopService(new Intent(this, MyFirebaseMessagingService.class)); 
      stopService(new Intent(this, MyFirebaseInstanceIDService.class)); 
     } 


    } 


    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     sharedPreferences = getSharedPreferences(getPackageName(), MODE_PRIVATE); 
     isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false); 
     if(isLoggedIn){ 
      Intent intent = new Intent(this,MyFirebaseMessagingService.class); 
      startService(intent); 
     } 
     else 
     { 
      stopService(new Intent(this, MyFirebaseMessagingService.class)); 
      stopService(new Intent(this, MyFirebaseInstanceIDService.class)); 

     } 
     Log.d(TAG, "FirstService destroyed"); 
    } 

    @Override 
    public void onTaskRemoved(Intent rootIntent) { 
     super.onTaskRemoved(rootIntent); 
     sharedPreferences = getSharedPreferences(getPackageName(), MODE_PRIVATE); 
     isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false); 
     if(isLoggedIn){ 
      Intent intent = new Intent(this,MyFirebaseMessagingService.class); 
      startService(intent); 
     } 
     else 
     { 
      stopService(new Intent(this, MyFirebaseMessagingService.class)); 
      stopService(new Intent(this, MyFirebaseInstanceIDService.class)); 
     } 
     Log.d(TAG, "FirstService tastremove"); 
    } 
} 

如何停止我的自定義服務中的FCM服務?第一個服務開始,但在後臺,我的服務不起作用,FCM服務會自動啓動並向我發送通知,即使我沒有登錄到我的應用程序中?無法停止我服務中的Firebase服務

回答

0

FirebaseMessagingService在接收消息時沒有主動角色。它僅用於在收到消息後處理消息。

即使您停止它,Android會在新消息到達時再次啓動它。

如果您希望您的應用程序停止接收郵件,您可以停止發送,或者您可以刪除您的FCM令牌FirebaseInstanceId.getInstance().deleteId()