2013-02-02 52 views
2

我想調用內部MainActivity的方法時由的onMessage()內部GCMIntentService.java,所述的onMessage(接收到新的消息)呼叫被叫blinkLED(方法)內的MainActivity.java所以blinkLED()方法可以使用接收到的數據onMessage(),我該怎麼實現呢?示例代碼將會很有幫助。從GCM的onMessage()

+1

爲什麼要在GCMIntentService中調用blinkLED()方法?最好的方法是使用SharedPreferences爲sotring值並調用blinkLED()或從Activity上的SharedPreferences獲取值onResume以顯示活動開始時的最新值 –

回答

6

使用BroadcastReceiver。 tutorial向您展示瞭如何從類發送廣播意圖,並讓其他類處理它。

短的例子,在你的GCMIntentService ::的onMessage(),你可能有這樣的:

Intent intent = new Intent(); 
intent.setAction("com.my.app.blinkled"); 
sendBroadcast(intent); 
在MainActivity

然後,您實現一個BroadcastReceiver:

private class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    blinkLED(); 
    } 
} 

,併爲它註冊MainActivity的onResume():

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("com.my.app.blinkled"); 
receiver = new MyBroadcastReceiver(); 
registerReceiver(receiver, intentFilter); 
+0

謝謝。你的答案適合我 –