반응형
◎4대 주요 구성요소
1) Activity - 화면 담당
2) Service - 백그라운드 동작
3) Broadcast Receiver - 휴대폰 정보
4) Content Provider
명시적으로
새로운 창을 만들자.
묵시적으로 코드 바꾸기. 실행 동작은 같다.
MainActivity.java 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
package com.lcw.ex61broadcastrecevier;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
MyReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Broadcast Receiver : 디바이스의 상태 변화를 인지하고자 할 때 사용[ex. 배터리 부족, 와이파이 불가능, 불루투스 탐색 등등]
//즉, 앱에서 운영체제의 정보를 취득하고 싶을 때..
//방송(Broadcast)을 통해 모든 앱에게
//알려주고 있음. 그러므로 이를 이용하고 싶다면
//방송 수신기(Broadcast Receiver)를 만들면 됨.
}
public void clickBtn(View view) {
//방송 보내기!! [내 앱안에 있는 리시버 실행하기.]
// Intent intent= new Intent(this, MyReceiver.class);
// sendBroadcast(intent);
//묵시적 인텐트로 리시버 실행하기 [내 디바이스에 설치된 모든 앱에게 방송을 보내기]
Intent intent= new Intent();
intent.setAction("aaa"); //"aaa"라는 액션 방송을 듣는 모든 리시버 반응해라.
sendBroadcast(intent);
//Oreo 버전부처 브로드캐스트 리시버나 서비스 컴포넌트 사용에 제한을 두고 있음.(백그라운드에서 너무 리소스)
//-묵시적 인텐트를 통한 리시버 호출은 금지함
//본인 앱에서 sendBroadcast()로 발동하는 방송은 본인 앱의 리시버만 가능하기에.. 명시적 인텐트만 권장함
//그럼에도 묵시적 인텐트로 하고 싶다면...
//앱이 켜져 있을 때만 동작하도혹..
//리시버를 이 액티비티에서 등록시켜 사용함
//자바에서 리시버를 등록하여 사용할 수 있음.
//시스템 브로드캐스트 인텐트는 여전히 묵시적 인텐트로 사용 가능함.
}
//액티비티가 화면에 보여질때
//자동으로 실행되는 메소드
@Override
protected void onResume() {
super.onResume();
//동적으로 리시버 등록..(Manifest에 등록하지 않음.)
myReceiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("aaa");
registerReceiver(myReceiver, filter);
}
//액티비티가 화면에 보여지지 않을 때
//지동으로 실행되는 메소드
@Override
protected void onPause() {
super.onPause();
//리시버를 제거
unregisterReceiver(myReceiver);
}
}
|
activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="send Broadcast"
android:textAllCaps="false"
android:onClick="clickBtn"/>
</RelativeLayout>
|
반응형
'안드로이드 웹앱 콘테츠 개발자 양성(국비지원) > Activity' 카테고리의 다른 글
Android Studio(기능) Broadcast Receiver 2 (0) | 2019.10.07 |
---|---|
Android Studio Activity 전환 (화면 전환), Intent 4 (0) | 2019.09.18 |
Android Studio Activity 전환 (화면 전환), Intent 3 (0) | 2019.09.18 |
Android Studio Activity 전환 (화면 전환), Intent 2 (0) | 2019.09.18 |
Android Studio Activity 전환 (화면 전환), Intent (0) | 2019.09.18 |
댓글