2011-07-13 112 views
0

我是Android開發人員,在閱讀有關任務和活動的文檔後,我無法正常工作。在Android中重新開始活動

(首先對不起我的英語)

我的應用程序包括兩個活動:LOGIN新聞。這兩種活動的啓動方法都是singleTask。

NEWS活動使用onCreate以Android notification tutorial!的標準通知代碼創建通知!

int icon = R.drawable.notification_icon;  // icon from resources 
CharSequence tickerText = "Hello";    // ticker-text 
long when = System.currentTimeMillis();   // notification time 
Context context = getApplicationContext();  // application Context 
CharSequence contentTitle = "My notification"; // expanded message title 
CharSequence contentText = "Hello World!";  // expanded message text 

Intent notificationIntent = new Intent(this, MyClass.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

Notification notification = new Notification(icon, tickerText, when); 
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

當我第一打開應用程序:

LOGIN - >的onResume() - >NEWS - >的onCreate() - >通知

隨着代碼

Intent newLogAct = new Intent(Login.this, News.class); 
TomTuckerActivity.this.startActivity(newLogAct); 

如果我打返回 * 新聞 *被破壞,並再次:

LOGIN - >的onResume() - >新聞 - >的onCreate() - >通知

(我不喜歡這樣循環,使用它的原因是在最後解釋)

如果我打首頁我回到主菜單,在這裏開始我不明白:

如果我使用該通知以重新啓動應用程序陽離子沒有問題,新聞窗口再次打開,而無需調用創建和沒有發送通知。

如果我在調用NEWS時使用應用程序圖標,singleTask選項似乎是無用的,因爲再次調用onCreate()並再次發送通知。

我想要的是恢復我離開它的應用程序,或者使用通知或圖標。

可能在newLogAct中的一個標誌將解決問題?

好的在這兩項活動中都有singleTask啓動選項嗎?


關於返回紐襻問題:

爲了避免我想過使用的onCreate(循環),而不是的onResume()。但是,當我使用應用程序圖標重新啓動應用程序時登錄已加載,但onCreate未調用,因此新聞尚未加載。

有沒有其他方法可以解決這個問題?

也許用onNewIntent()方法?

+0

首先,爲什麼lauching方法是singleTask? [doc](http://developer.android.com/guide/topics/manifest/activity-element.html#lmode)表示它只能用於非常特殊的情況。 –

+0

因爲如果沒有,當我打回家,然後重新進入應用程序的圖標或通知一個新的實例創建,然後我有: 登錄 - 新聞 - 登錄 - 新聞 - ... 四個活動,而不是二。還有其他方法可以做到嗎? – Octan

+0

如果你用圖標重新進入應用程序,我不認爲它會創建一個新的實例,它應該回到最後一個活動。 –

回答

0

您的問題(或至少是其中的一部分)似乎是:如何使通知回到您離開應用程序的位置。

通知不應該以這種方式使用,點擊通知應該開始一個新的活動,其目的是處理通知。如果你確實想回到你離開它的應用程序(我正在做它),你可以使用下面的技巧(我不知道這是否是好的做法,但它的工作原理並不是看起來很冒險):創建一個名爲Autodestruct的活動,它在其onCreate()方法中調用finish(),並使通知運行此活動。這將在其頂部恢復帶有虛擬活動的後退堆棧,並立即刪除虛擬活動。

+0

感謝您的回答。但是,從通知進行訪問時,我沒有任何問題,應用程序會從我離開的位置恢復。按照你的建議,我改變了singleTop的singleTask方法,它仍然有效。當我使用圖標啓動應用程序時,它會創建一個完整的新實例。但是如果我第一次使用通知來啓動它,那麼我按下主頁按鈕,然後使用應用程序在我離開它的位置恢復的圖標。這有點奇怪。 – Octan

+0

我沒有建議,你甚至不需要改變啓動方法,'標準'應該可以工作。 –