-
[Android] Broadcast? Broadcast Receiver๋?Android 2021. 1. 8. 16:34๋ฐ์ํ
- ์ด ๊ธ์ ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ ์ค ํ๋์ธ Broadcast Receiver์ ๊ดํ ๊ธ์ ๋๋ค.
Broadcast ๊ฐ์
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ Publish-Subscribe ํจํด๊ณผ ์ ์ฌํ๊ฒ ์๋๋ก์ด๋ ์์คํ ๋๋ ๋ค๋ฅธ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๋ฅผ ๋ฐ์ต๋๋ค.
์์๋ก ํด๋ํฐ์ด ์ผ์ง ๋, ํด๋ํฐ์ด ์ถฉ์ ํ ๋์ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ App์ ๋ฑ๋ก์ ํ๊ฒ ๋๋ฉด ์ด๋ฒคํธ ๋ฐ์ ์ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋ฉ๋๋ค.
์์คํ ์ ํน์ ๋ธ๋ก๋์บ์คํธ ์ ํ์ ๋ฐ์ App์ผ๋ก ๋ธ๋ก๋์บ์คํธ๋ฅผ ์๋์ ์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค.
๋ธ๋ก๋์บ์คํธ์ ์๋ตํ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ํ ๋ ๋จ์ฉํ์ง ์๋๋ก ์กฐ์ฌํด์ผ ํฉ๋๋ค.
Broadcast ์ฌ์ฉ
๋งค๋ํ์คํธ ์์ ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ๋ฅผ ์ ์ธํฉ๋๋ค.
<receiver android:name=".MyReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
- ๋ธ๋ก๋์บ์ํธ ๋ฉ์์ง๋ Intent ๊ฐ์ฒด๋ก wrapping ๋๋๋ฐ Intent ๊ฐ์ฒด์ action string์ ํตํด ๊ตฌ๋ณ๋ฉ๋๋ค.
- receiver์์ intent-filter์ ๋ฐ์์ผ ํ๋ ์ด๋ฒคํธ์ ๋ํ ๋ธ๋ก๋์บ์คํธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ์ ๋ฑ๋กํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ ์ ํด๋น MyReceiver ํด๋์ค๊ฐ ์คํ๋ฉ๋๋ค.
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving Toast.makeText(context,"๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ ์คํ๋ฉ๋๋ค",Toast.LENGTH_LONG).show(); } }
- The system package manager๋ App์ด ์ค์น๋ ๋ ๋ฆฌ์๋ฒ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
- MyReceiver ํด๋์ค๋ onReceive ๋ฉ์๋๊ฐ ๋ฐํ๋๋ฉด ์์คํ ์ ๋ธ๋ก๋์บ์คํธ๊ฐ ๋ ์ด์ ํ์ฑํ ์ํ๋ก ๋ณด์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BroadcastReceiver br = new MyReceiver(); IntentFilter intentFilter = new IntentFilter(ConnectivityManager.EXTRA_NO_CONNECTIVITY); intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED); registerReceiver(br,intentFilter); } }
- ๋ค์ ๋ฐฉ๋ฒ์ Context๋ฅผ ๋ฑ๋กํ ๋ฆฌ์๋ฒ๋ก์ ํด๋น Context๊ฐ ์ ํจํ๊ธฐ ๊น์ง๋ ๋ธ๋ก๋์บ์คํธ๋ ์ ํจํฉ๋๋ค.
- ํ์ฌ MainActivity์ Context๋ฅผ ๋ฑ๋กํ์๊ธฐ ๋๋ฌธ์ MainActivity๊ฐ destroy๋๋ฉด ๋ธ๋ก๋์บ์คํธ๋ ๋ ์ด์ ํ์ฑํ๋์ง ์์ต๋๋ค.
๋ฐ์ํ'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] Robelctric Test๋ (0) 2021.02.17 [Android] Unit Test, JUnit4 (0) 2021.02.16 [Android] ์๋๋ก์ด๋ ์คํ๋์ค NDK ์ฌ์ฉ๋ฒ (0) 2021.02.12 [Java] ์๋ฐ ์ฐ๋ ๋์ ๋๊ธฐํ (0) 2021.02.07 [Android] Recycler View ์ฌ์ฉ๋ฒ (0) 2021.01.04