2012-05-07 59 views
0

在我的android客戶端程序中,當用戶有更新時收到通知。當用戶點擊通知時,他會被帶到顯示通知的新活動。現在,問題在於,如果收到另一個通知,用戶正在查看更新,並且他點擊該通知,則不會創建新的活動。
顯示上一個活動。該活動不會刷新。 < 我懷疑這是因爲當前的活動沒有完成。我應該如何克服這一點?在用戶點擊通知後完成當前活動

回答

0

爲什麼不試試在你的代碼中的WindowsFocusChanged(boolean hasFocus)。您的情況發生的是活動窗口已處於焦點狀態因此,當您單擊通知欄並移至相同的活動窗口時,將不會發生任何事情。
onWindowFocusChanged(boolean hasFocus)將在您每次進入該活動時執行。所以把你的整個代碼放到這裏。即使第一次調用活動,它也會被執行。因此,從公共無效的onCreate(捆綁savedInstanceState)我們的代碼複製到

public void onWindowFocusChanged (boolean hasFocus) 
    { 
     super.onWindowFocusChanged(hasFocus); 
     setContentView(R.layout.layout_name); 

      //Your code to be executed here 
    } 

而且是啊,你需要擁有的OnCreate()函數也是如此聲明,作爲

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    } 


試試這個。 我希望它適合你

+0

它就像一個魅力! – Ashwin

0

把它放在清單中的活動代碼中(可以使用參數來更好地適應您的應用程序)。

機器人:launchMode = 「singleTop」

+0

:這是做什麼。 – Ashwin

+0

僅使您的活動有一個實例,並且如果您已有該活動的實例 - 則會恢復 – Royi

+0

:這正是我不想要的。我希望如果一個實例已經存在,它應該完成並開始一個新的活動。 – Ashwin

0

嘗試在你的活動代碼,添加此屬性的清單:

android:launchMode=["multiple" | "singleTop" | 
        "singleTask" | "singleInstance"] 

與價值singleTop,它不會產生一個其他活動但如果存在,則調用潛在活動的onNewIntent方法。

Activity Element Documentation

0

而是完成當前活動的,你爲什麼要使用的onResume()方法來更新與新通知的數據的UI。編寫方法來更新ui組件並從onResume()調用它。

+0

當我點擊通知或在此之前,我的當前活動會暫停嗎? – Ashwin

+0

當您點擊通知時,當前活動正在暫停。並開始活動另一個實例。所以再次調用onResume()。請問我是否在通知中使用任何標誌開始新的活動?最好使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);國旗在開始活動之前。 –