2015-04-01 45 views
0

我知道我們可以在通知這樣開放的推出活動:回調推送通知開放的Android

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
Intent targetIntent = new Intent(this, MainActivity.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
builder.setContentIntent(contentIntent); 
//... 

但是如果代替午餐的活動,我想運行一個回調,什麼樣的一些onPushOpen ,那麼選擇那裏如何處理通知點擊?

回答

-2

你可以使用EventBus才達到這一點。只需發佈一些類似onPushOpen()的事件並將其捕獲到任何你想要的地方。製造水貨像:

Intent targetIntent = new Intent(this, NaughtyActivity.class); 

並使NaughtyActivity使用沒有佈局。只用它來發布事件並完成。

0

您可以在清單申報的活動,稱之爲NotificationClickHandlerActivity,您將設置爲目標的通知,而不是MainActivity的未決的意圖。

在這個新活動的onCreate方法中,根據意圖中的信息(action,categories,extras)調用getIntent,確定接下來需要打開什麼,啓動您確定或執行的新目標活動其他動作,然後從onCreate中調用完畢並立即返回。

如果一個活動像這個處理程序一樣在onCreate中完成,它將永遠不會顯示給用戶,所以他不會意識到它甚至存在,他會看到的是您可能從其中啓動的其他活動。

另外,請記住,因爲他們將在UI線程上執行,並且將響應用戶輸入阻止你的應用程序,你不應該在此處理活動的onCreate方法做長時間運行的操作。如果你必須做一些長時間運行,把它放在一個異步任務的子類中(無論是靜態嵌套類的處理活動的,或者完全獨立的類),然後開始從onCreate方法這個任務的一個實例,並在之後的調用finish任務已啓動。該任務將繼續在後臺運行。如果任務需要上下文來執行任何操作,請確保通過調用getApplicationContext將其傳遞給應用程序上下文,並且不要傳遞活動本身,否則會發生內存泄漏。