[解決済み] クリアリング・インテント
2022-07-26 07:51:47
質問
私のAndroidアプリは、情報を渡しているインテントから呼び出されています(ステータスバーのpendingintent)。
ホーム ボタンを押してアプリを再度開くと、再びインテントが呼び出され、同じエクストラがまだ残っています。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
これは、想定したとおりに実行されないコードです。
String imgUrl;
Bundle extras = this.getIntent().getExtras();
if(extras != null){
imgUrl = extras.getString("imgUrl");
if( !imgUrl.equals(textView01.getText().toString()) ){
imageView.setImageDrawable( getImageFromUrl( imgUrl ) );
layout1.setVisibility(0);
textView01.setText(imgUrl);//textview to hold the url
}
}
そして私の意図
public void showNotification(String ticker, String title, String message,
String imgUrl){
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(ns);
int icon = R.drawable.icon; // icon from resources
long when = System.currentTimeMillis(); // notification time
CharSequence tickerText = ticker; // ticker-text
//make intent
Intent notificationIntent = new Intent(this, activity.class);
notificationIntent.putExtra("imgUrl", imgUrl);
notificationIntent.setFlags(
PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_ONE_SHOT);
PendingIntent contentIntent =
PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_ONE_SHOT);
//make notification
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(this, title, message, contentIntent);
//flags
notification.flags = Notification.FLAG_SHOW_LIGHTS |
Notification.FLAG_ONGOING_EVENT |
Notification.FLAG_ONLY_ALERT_ONCE |
Notification.FLAG_AUTO_CANCEL;
//sounds
notification.defaults |= Notification.DEFAULT_SOUND;
//notify
mNotificationManager.notify(1, notification);
}
インテントをクリアしたり、以前に使用されたことがあるかどうかを確認する方法はありますか?
どのように解決するのですか?
アップデートを行う。
5年以上前に初めて書いたときは、この回答がこれほどまでに参照されるとは思いませんでした!
私は、@tato-rodrigo の回答のように、これはいくつかの状況で既に処理された意図を検出するのに役立たないことを指摘するために明らかにします。
また、私が "clear" を引用符で囲んだ理由を指摘すべきです - あなたは ではなく あなたは、この意図がすでに活動によって見られているというフラグとして、余分なものの削除を使用しているだけです。
私もまったく同じ問題を抱えていました。
上記の回答は私を正しい道に導いてくれ、さらに簡単な解決策を見つけました。
getIntent().removeExtra("key");
メソッド呼び出しでインテントをクリアします。
これは1年前に質問されたので、回答が少し遅くなりましたが、これが将来他の人の役に立つことを願っています。
関連
-
[解決済み] Androidでインテントから余分なデータを取得するにはどうすればよいですか?
-
[解決済み] メール送信インテント
-
[解決済み] Androidにおけるインテントとは何ですか?
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] Androidのjunitテストケースでテストプロジェクトのコンテキストを取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] アンドロイドのスプラッシュスクリーンのサイズは、ldpi、mdpi、hdpi、xhdpiのディスプレイのためのものですか?- 例:1024X768ピクセル(ldpi)。