티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to use LocalBroadcastManager?
LocalBroadcastManager를 사용하는 방법?
문제 내용
How to use/locate LocalBroadcastManager
as described in google docs and Service broadcast doc?
Google 문서 및 서비스 브로드캐스트 문서에서 설명한 대로 LocalBroadcastManager를 사용/발견하는 방법은 무엇인가요?
I tried to google it, but there is no code available to start with?
내용을 시작하기 위한 코드가 없어서 구글링을 시도해보았지만 찾을 수 없습니다.
The documents say that I should use it if I want to do broadcast internally with in my app's process but I don't know where to look for this.
해당 문서에 따르면 앱 내부에서 방송을 수행하려면 LocalBroadcastManager를 사용하면 된다고 합니다. 그러나 이를 어디에서 찾을 수 있는지는 모르겠습니다.
Any help/comment?
도움이 필요하신가요? 댓글을 달아주시면 빠르게 답변드리겠습니다.
Update: I know how to use Broadcasts but don't know how to get LocalBroadcastManager
available in my project.
업데이트: Broadcast를 사용하는 방법은 알고 있지만 LocalBroadcastManager를 프로젝트에서 사용 가능하게 하는 방법을 모르겠습니다.
높은 점수를 받은 Solution
I'll answer this anyway. Just in case someone needs it.
제가 그냥 답변을 남겨놓겠습니다. 혹시라도 누군가에게 도움이 될 수 있습니다.
ReceiverActivity.java
An activity that watches for notifications for the event named "custom-event-name"
.
"custom-event-name"라는 이벤트의 알림을 감시하는 액티비티입니다.
@Override
public void onCreate(Bundle savedInstanceState) {
...
// Register to receive messages.
// We are registering an observer (mMessageReceiver) to receive Intents
// with actions named "custom-event-name".
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("custom-event-name"));
}
// Our handler for received Intents. This will be called whenever an Intent
// with an action named "custom-event-name" is broadcasted.
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
@Override
protected void onDestroy() {
// Unregister since the activity is about to be closed.
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onDestroy();
}
SenderActivity.java
The second activity that sends/broadcasts notifications.
알림을 보내는 두 번째 액티비티입니다.
@Override
public void onCreate(Bundle savedInstanceState) {
...
// Every time a button is clicked, we want to broadcast a notification.
findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendMessage();
}
});
}
// Send an Intent with an action named "custom-event-name". The Intent sent should
// be received by the ReceiverActivity.
private void sendMessage() {
Log.d("sender", "Broadcasting message");
Intent intent = new Intent("custom-event-name");
// You can also include some extra data.
intent.putExtra("message", "This is my message!");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
With the code above, every time the button R.id.button_send
is clicked, an Intent is broadcasted and is received by mMessageReceiver
in ReceiverActivity
.
위의 코드로 인해 버튼 R.id.button\_send가 클릭될 때마다 인텐트가 방송되고 ReceiverActivity에서 mMessageReceiver로 수신됩니다.
The debug output should look like this:
디버그 출력은 다음과 같아야 합니다:
01-16 10:35:42.413: D/sender(356): Broadcasting message
01-16 10:35:42.421: D/receiver(356): Got message: This is my message!
가장 최근 달린 Solution
Kotlin version of using LocalBroadcastManager
:
Kotlin에서 LocalBroadcastManager 사용하는 방법:
Please check the below code for registering
, sending
and receiving
the broadcast
message.
아래 코드를 사용하여 브로드캐스트 메시지를 등록, 전송 및 수신하는지 확인해주세요.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// register broadcast manager
val localBroadcastManager = LocalBroadcastManager.getInstance(this)
localBroadcastManager.registerReceiver(receiver, IntentFilter("your_action"))
}
// broadcast receiver
var receiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent != null) {
val str = intent.getStringExtra("key")
}
}
}
/**
* Send broadcast method
*/
fun sendBroadcast() {
val intent = Intent("your_action")
intent.putExtra("key", "Your data")
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
override fun onDestroy() {
// Unregister broadcast
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
super.onDestroy()
}
}
출처 : https://stackoverflow.com/questions/8802157/how-to-use-localbroadcastmanager
'개발 > 안드로이드' 카테고리의 다른 글
안드로이드에서 딜레이 후 메소드 호출하기 (0) | 2023.03.07 |
---|---|
Android를 사용하여 HTTP 요청 만들기 (0) | 2023.03.07 |
"java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema" 오류 수정하기 (0) | 2023.03.06 |
안드로이드에서 SOAP 웹 서비스를 호출하는 방법 (0) | 2023.03.05 |
안드로이드 스튜디오 오류 "Android Gradle 플러그인은 실행하기 위해 Java 11이 필요합니다. 현재 Java 1.8을 사용하고 있습니다." (0) | 2023.03.05 |