ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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๋˜๋ฉด ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋Š” ๋” ์ด์ƒ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.