2013-07-30 122 views
0

我有一個名爲「A」的活動,帶有兩個按鈕。每個按鈕打開其他新活動「B」和「C」,活動「A」處於onPause狀態。 活動「C」有一個3頁的看法從通知中打開活動

此應用程序可以接收通知。

點擊收到的通知,打開活動「C」。

正確此功能通過以下方式:

//... 
    NotificationManager notificationManager =(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 
... 
Intent intent =new Intent(getApplicationContext(), activityC.class); 
     intent.putExtra("hello", notificationData); 

這是我的問題:

我想,當你單擊該通知收到,如果我的應用程序是顯示活動「A」或「 B」或應用程序是在背景,以關閉和打開所述活動‘C’

如果應用程序是表示活動‘C’導致的ViewPager(pager.setCurrentItem (2);

一個頁210

幾天我一直在讀,我嘗試了幾種方法,使用android:launchMode="singleTop"定義FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP and FLAG_ACTIVITY_SINGLE_TOP ......但始終沒有成功

我要瘋了這... ...

有人可以幫助我?

在此先感謝!

回答

0

而不是由C開展活動,當點擊通知應當由活動爲您提供接收,然後將啓動您的活動C.

你可以嘗試設置FLAG_ACTIVITY_SINGLE_TOP的活動c。發送廣播,這樣,如果C已經處於頂端,它應該收到意圖。

0

你需要做的是定義你到底在哪裏。 這裏我將如何處理這個問題:

使類和應用類

延長在這裏定義一個變量,它可以是布爾,枚舉,整型,等等 時您輸入任何這些活動,更改該參數。

在OnDestroy中的每個活動將該特定變量重置爲其默認值。

在做出意向之前,在您的服務中,請檢查您最後的狀態並根據您的意圖制定您的意向。

public class MY_APPLCIATION extends Application { 
    public static Boolean ActivityAIsRunning=false; 
    public static Boolean ActivityBIsRunning=false; 
} 

覆蓋的onResume和的onDestroy兩個活動:

public class ActivityA extends AppCompatActivity { 
    // ...... 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     MY_APPLCIATION.ActivityAIsRunning=false; 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     MY_APPLCIATION.ActivityAIsRunning=true; 
    } 
} 

ActivityB:

public class ActivityB extends AppCompatActivity { 
    // ...... 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     MY_APPLCIATION.ActivityBIsRunning=false; 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     MY_APPLCIATION.ActivityBIsRunning=true; 
    } 
} 

現在是你應該注意一個重要的注意事項:

您應該在創建通知時定義意圖!

你應該有另一個活動(我們稱之爲MY_NOTIFICATION_ACTIVITY)。 並且通知應該始終轉到此活動。 現在在該活動中檢查設置了哪個布爾值,然後調用期望的活動(ActivityA或ActivityB或ActivityC)。不要忘記在你的清單中你應該使ActivityB singleTop!

***另一種簡單的方法

另一種簡單的方法是,你更新每個活動的onResume通知。 通過輸入每個活動,您將意圖更改爲所需的活動,並進行相同的通知並更新最後的通知。