簡體   English   中英

從服務啟動活動並按“主頁”按鈕后停止先前的活動

[英]Launch activity from service and stop previous activities after pressing Home Button

我的其中一項活動是通過Intent從服務啟動的。FLAG_ACTIVITY_NEW_TASK。 當我按下“后退”按鈕並啟動此Activity它將打開,當我按下“后退”按鈕時,我會看到常規的Android主頁。 但是,如果我按“主頁”按鈕,然后從“ Service啟動我的“ Activity ,然后按“返回”,則可以從我的應用程序中看到上一個活動。 但我想看看普通的Android主頁。

有人可以幫我嗎?

如果我對您的理解正確,則需要該Activity的一個實例。 我的看法有兩種選擇:

  1. 如果您不關心堆棧上有多少活動或如何組織活動,則可以在應用程序清單launchMode設置為singleInstance
  2. 對於大多數應用程序,不建議使用singleInstance (我為您提供的鏈接並沒有詳細說明原因,但這是另一回事)。 或者,如果您有多個活動,那么使用此啟動模式進行活動可能不合適。 當您在堆棧上有活動或沒有活動時,您需要處理這種情況。 從服務中,您可以發送有序廣播 ,如果活動處於堆棧中,則該活動可以處理並中止(在您的活動#onCreate()和#onDestroy()中,您將要注冊,或者分別取消注冊該接收器。請記住要按序排列) )。 更多有關訂購廣播接收機的信息 因此,如果活動在堆棧中,您將收到該意圖並放棄廣播。 如果活動不在堆棧中,則另一個優先級較低的廣播接收器將收到該意圖-在這種情況下,就是您的服務。 因此,再次:onCreate和onDestroy-注冊resp。 注銷廣播接收器。 在其onReceive()方法中,您將處理現在正在執行的操作-使用FLAG_ACTIVITY_NEW_TASK打開“活動”。 希望有道理。

在以下幫助下成功做到了:

  1. launchMode:singleInstance,如@gunar所說
  2. FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
  3. FLAG_ACTIVITY_NEW_TASK
  4. taskAffinity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM