私のAndroidクライアントプログラムでは、ユーザーが更新するたびに通知を受け取ります。ユーザーが通知をクリックすると、通知が表示される新しいアクティビティに移動します。問題は、別の通知を受信した場合にユーザーが更新を表示しているときに、その通知をクリックしても新しいアクティビティが作成されないことです。
前のアクティビティが表示されます。アクティビティが更新されていません。< これは、現在のアクティビティが終了していないためだと思われます。これをどのように克服すればよいですか?
4 に答える
これをマニフェストのアクティビティコードに入れます(アプリに合うようにパラメーターを操作できます)。
android:launchMode = "singleTop"
コードでonWindowFocusChanged(boolean hasFocus)を試してみませんか。この場合、アクティビティウィンドウはすでにフォーカスされた状態になっているため、通知バーをクリックして同じアクティビティウィンドウに移動しても何も起こりません。
onWindowFocusChanged(boolean hasFocus)は、そのアクティビティに入るたびに実行されます。したがって、コード全体をこれに入れます。アクティビティが初めて呼び出された場合でも、実行されます。したがって、urコードをpublic void onCreate(Bundle 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);
}
これを試して。私はそれがあなたのために働くことを願っています
現在のアクティビティを終了する代わりに、onResume() メソッドを使用して UI を新しい通知データで更新する必要があるのはなぜですか。UI コンポーネントを更新するメソッドを作成し、onResume() から呼び出します。
マニフェストのアクティビティ タグにこの属性を追加してみてください。
android:launchMode=["multiple" | "singleTop" |
"singleTask" | "singleInstance"]
valuesingleTop
を使用すると、他のアクティビティは作成されませんが、潜在的なアクティビティが存在する場合はその onNewIntent メソッドが呼び出されます。