2016-06-18 34 views
1

我跟着這個鏈接https://developers.google.com/cloud-messaging/android/start但我不明白幾件事情。GCM GcmListenerService和InstanceIDListenerService

  1. 我從哪裏開始GcmListenerServiceInstanceIDListenerService(服務),因爲在他們的例子並不在代碼的任何地方啓動它。這些課程是否自動啓動?

GcmListenerService類:

public class GcmMessageReceiver extends GcmListenerService { 

public GcmMessageReceiver() { 
    Log.i("TEST", "GcmMessageReceiver"); 
} 

@Override 
public void onMessageReceived(String from, Bundle data) { 
    String message = data.getString("message"); 

    Log.i("TEST", data.toString()); 
    Log.i("TEST", "Success!"); 

} 

GcmListenerService艙單申報:

<service 
     android:name=".GcmMessageReceiver" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     </intent-filter> 
    </service> 

我InstanceIDListenerService類:

public class GcmOnTokenRefresh extends InstanceIDListenerService { 

public GcmOnTokenRefresh(){ 
    Log.i("TEST", "GcmOnTokenRefresh"); 
} 


@Override 
public void onTokenRefresh() { 
    startService(new Intent(this, RegisterTokenService.class)); 
    super.onTokenRefresh(); 
} 
} 

InstanceIDListenerService清單declaratio n:

<service 
     android:name=".GcmOnTokenRefresh" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.gms.iid.InstanceID" /> 
     </intent-filter> 
    </service> 

回答

0

是的,你是對的,如果你把它們寫入AndroidManifest.xml文件,它們會自動啓動。就像背景中的所有其他服務一樣。

+0

在這些服務中,在構造函數中,我嘗試打印出一些值來查看服務是否已啓動(如您在給定代碼中所見),但沒有打印出來。這些服務何時開始運行? –

+0

當應用程序收到通知的意圖時,它們開始。 –

+0

還有一件事,你的註冊服務應該從你的主要活動開始,我忘了它:) –