2012-05-07 12 views
0

私のアンドロイドクライアントプログラムでは、ユーザーに更新があったときに通知を受け取ります。ユーザーが通知をクリックすると、通知が表示される新しいアクティビティに移動します。今問題は、別の通知を受け取った場合にユーザーが更新を表示している間に、その通知をクリックすると新しい活動が作成されていないことです。
前のアクティビティが表示されます。アクティビティがリフレッシュされません。 < これは、現在のアクティビティが完了していないためです。どのように私はこれを克服すべきですか?ユーザーがnotitifcationをクリックした後の現在のアクティビティの終了

答えて

0

コードでonWindowFocusChanged(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 
    } 

にウルのコードをコピーして、いや、あなたはその

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

として


宣言してものonCreate()関数を持っている必要があり、これを試してみてください。 私はそれがあなたのために働くことを望む

+0

それは魅力のように動作します! – Ashwin

0

あなたのマニフェストのアクティビティコードにこれを入れます(あなたのアプリに合わせてパラメータを調整することができます)。

アンドロイド:launchMode = "singleTop"

+0

:これは何をしますか? – Ashwin

+0

あなたのアクティビティのインスタンスを1つしか作成せず、そのアクティビティのインスタンスをすでに持っている場合は、再開されます。 – Royi

+0

:これはまさに私が望まないものです。インスタンスが既に存在する場合は、終了して新しいアクティビティを開始する必要があります。 – Ashwin

0

がマニフェストにあなたのアクティビティタグにこの属性を追加してください:

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

singleTopと、それは他のアクティビティを作成しません存在する場合は潜在的なActivityのonNewIntentメソッドを呼び出します。代わりに、現在の活動を終えての

Activity Element Documentation

0

は、なぜあなたは新しい通知データとUIを更新するために、onResume()メソッドを使用する必要があります。 uiコンポーネントを更新するメソッドを記述し、onResume()から呼び出します。

+0

通知をクリックするか、その直前に現在のアクティビティが一時停止しますか? – Ashwin

+0

通知をクリックすると、現在のアクティビティが停止しています。また、別のインスタンスがアクティビティを開始しました。したがって、onResume()が再び呼び出されます。私はあなたが通知から新しい活動を開始するためのフラグを使用していることを知っているかもしれません。 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);を使用する方が良い。アクティビティを開始する前に –

関連する問題