0
我使用推送通知顯示在我的應用程序片段顯示片段,但我的實現看起來不穩定從推送通知
有應用程序運行時兩種情況,當應用程序沒有運行
在這兩種情況下我希望應用程序顯示特定片段
這是我FragmentActivity在我的清單文件
<activity
android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.NoBackground"
android:windowSoftInputMode="adjustPan" >
</activity>
這裏爲m Ÿ代碼當它收到一個GCM消息
private void sendNotification(String message) {
NotificationManager mNotificationManager = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
int requestID = (int) System.currentTimeMillis();
final PendingIntent contentIntent = PendingIntent.getActivity(
getApplicationContext(), requestID, new Intent(
getApplicationContext(), Main.class).setAction(Actions.SHOW_FRIENDS_FRAGMENT), PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this)
.setSmallIcon(R.drawable.notification_icon)
.setAutoCancel(true)
.setContentText(message)
.setSound(
RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(Util.getApp().getNotificationId(), mBuilder.build());
}
一個在我的活動創建通知,這是由服務,稱爲我在這兩個的onCreate和onNewIntent
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkIntent(intent);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
checkIntent(intent);
}
private void checkIntent(Intent i){
try{
String action = i.getAction();
if(action != null){
if(action.equalsIgnoreCase(Actions.SHOW_FRIENDS_FRAGMENT)){
showFriendsFragment();
}
}
}catch(Exception e){
}
}
檢查的問題是,如果動作在應用程序重新啓動時在onCreate中找到,動作仍然存在,因此它始終在該頁面上啓動。 在onNewIntent中找到該操作時不會發生該行爲,但僅在該應用程序正在運行時纔會調用該行爲。
我試過使用臨時演員,並顯示片段後,刪除他們更改掛起意圖標誌CANCEL_CURRENT
,ONE_SHOT
但行爲仍然是相同的。