2013-10-14 77 views
0

我有一個gcm接收器,但在重新啓動手機之前以及清除內存之後,它不工作。我應該改變什麼來保證接收器始終在工作?安卓接收器在清潔RAM後停止

<activity 
      android:name="com.example.diyet.MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 

<activity android:name="com.plugin.gcm.PushHandlerActivity"/> 
<receiver android:name="com.plugin.gcm.CordovaGCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
     <category android:name="com.plugin.gcm" /> 
    </intent-filter> 
</receiver> 
<service android:name="com.plugin.gcm.GCMIntentService" />, 

在此先感謝

+0

什麼是「乾淨的RAM來實現「 意思? – tyczj

+0

sory for my english,我的意思是「我殺了正在運行的應用程序」 – ridvanzoro

+0

好吧,如果你殺了你的應用程序當然它不會工作,這就是爲什麼你不應該殺死應用程序 – tyczj

回答

0

如果u要手動啓動您的接收器,然後使用

registerReceiver(receiver)您的活動中

0

對不起,我不知道什麼GCM,但如果我得到你對,您有以下其中一種可能性

如果您的GCMIntentService是自定義的,則可以使此服務STICKY因此,操作系統在崩潰後重新啓動它。爲此,您必須在onStartCommand方法中返回return Service.START_STICKY;

此外,您可以註冊android.intent.action.BOOT_COMPLETED以在設備啓動後立即啓動服務。

如果你想防止服務崩潰,當應用程序崩潰時,你必須把它放在另一個線程中。這可以通過在清單

android:process="com.gigatronik.presenter.serialport.SerialPortListenerService"/ 

設置一個自定義的進程名稱,我會編輯這個答案,如果你能給我你的問題的更多信息,因爲我從來沒有使用過GCM