[Android]ActiveでActivityを無効にする/BroadcastでActivityを無効にする
Activity B->Aに移動すると、Bをアクティブにし、Backボタンを押したときに戻ることができます.
Aが死んだ時にBを殺そうとする場合もある
Google検索結果flagを使う方法もありますが.
私の状況が役に立たないからです.
broadcastreceiverを使用して問題を解決しました.
ブロードキャスト受信者
以下は、アンドロイド・ベロバースの文書の翻訳部分です.
ブロードキャスト受信者は、アンドロイドシステムの4つのコンポーネントの1つであり、システムがアプリケーションに様々なイベントを送信(ブロードキャスト)し、アプリケーションがシステムのブロードキャストに応答することを可能にする.
ブロードキャスト受信者はアプリケーションのエントリの1つであるため、システムは現在実行されていないアプリケーション上でブロードキャストすることができる.
多くのブロードキャストは、システムから開始されます.たとえば、画面の電源が切れたり、バッテリの電力が不足したり、画面がキャプチャされたりします.
アプリは自分で放送できますたとえば、いくつかのデータがダウンロードされた場合、他のアプリケーションに通知できます.
ブロードキャスト受信者は、ユーザと対話するUIを持たないが、ブロードキャストイベントが発生したときにステータスバーに通知することができる.しかし、放送受信者は別のコンポーネントの入口/チャネル(gateway)にすぎないため、非常に小さなことをする必要があります.△これは通知する必要がないことを意味するようです.
ブロードキャスト受信者はBroadcastReceiverクラスのサブクラスであり,各ブロードキャストはIntentオブジェクトとして転送される.
整理する
A broadcast receiver is just a gateway to other components and is intended to do a very minimal amount of work.
4つのコンポーネントを学習する際、放送受信者はアプリケーション間のコミュニケーションが必要だと考えています.上記の正式なドキュメントに示すように、アクティブなコンポーネント間でも使用できることを初めて発見し、後で役に立ちます.
Aが死んだ時にBを殺そうとする場合もある
Google検索結果flagを使う方法もありますが.
私の状況が役に立たないからです.
broadcastreceiverを使用して問題を解決しました.
//Activity A
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent("finish_B"))
finish()
//Activity B
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
registerBr()
}
private val reviewBr = object : BroadcastReceiver() {
override fun onReceive(p0: Context?, p1: Intent?) {
if(p1?.action.equals("finish_B")) {
this@ActivityB.finish()
}
}
}
private fun registerBr() {
val filter = IntentFilter("finish_explanation")
LocalBroadcastManager.getInstance(this).registerReceiver(reviewBr, filter)
//시스템 혹은 다른 앱이 아니라, 하나의 앱 내에서 발생한 Broadcast를 수신하는 경우
//LocalBroadcastManager를 사용해야 한다. (ex.액티비티 간에 방송 송수신하는 경우)
}
private fun unregisterBr() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(reviewBr)
}
override fun onDestroy() {
unregisterBr()
super.onDestroy()
}
Activityに登録されているブロードキャスト受信者は、不要なメモリの使用を避けるために登録をキャンセルする必要があります.ライフサイクルで一貫性を保つ限り、無効にできます.onCreateに登録する場合はonDestoryで無効にする必要があり、onResumeで登録する場合はonPauseで無効にする必要があります.ブロードキャスト受信者
以下は、アンドロイド・ベロバースの文書の翻訳部分です.
ブロードキャスト受信者は、アンドロイドシステムの4つのコンポーネントの1つであり、システムがアプリケーションに様々なイベントを送信(ブロードキャスト)し、アプリケーションがシステムのブロードキャストに応答することを可能にする.
ブロードキャスト受信者はアプリケーションのエントリの1つであるため、システムは現在実行されていないアプリケーション上でブロードキャストすることができる.
多くのブロードキャストは、システムから開始されます.たとえば、画面の電源が切れたり、バッテリの電力が不足したり、画面がキャプチャされたりします.
アプリは自分で放送できますたとえば、いくつかのデータがダウンロードされた場合、他のアプリケーションに通知できます.
ブロードキャスト受信者は、ユーザと対話するUIを持たないが、ブロードキャストイベントが発生したときにステータスバーに通知することができる.しかし、放送受信者は別のコンポーネントの入口/チャネル(gateway)にすぎないため、非常に小さなことをする必要があります.△これは通知する必要がないことを意味するようです.
ブロードキャスト受信者はBroadcastReceiverクラスのサブクラスであり,各ブロードキャストはIntentオブジェクトとして転送される.
整理する
A broadcast receiver is just a gateway to other components and is intended to do a very minimal amount of work.
4つのコンポーネントを学習する際、放送受信者はアプリケーション間のコミュニケーションが必要だと考えています.上記の正式なドキュメントに示すように、アクティブなコンポーネント間でも使用できることを初めて発見し、後で役に立ちます.
Reference
この問題について([Android]ActiveでActivityを無効にする/BroadcastでActivityを無効にする), 我々は、より多くの情報をここで見つけました https://velog.io/@ejjjang0414/안드로이드-다른-Activity-에서-Activity-죽이기-Broadcast-로-Activity-죽이기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol