๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
APP/ANDROID

[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์ธํ…ํŠธ(intent)๋ฅผ ์ด์šฉํ•œ ํ™”๋ฉด์ „ํ™˜

by mingzoo 2020. 2. 18.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ 4๊ฐ€์ง€

  1. ์•กํ‹ฐ๋น„ํ‹ฐ(Activity)
  2. ์„œ๋น„์Šค
  3. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž
  4. ๋‚ด์šฉ ์ œ๊ณต์ž

์•กํ‹ฐ๋น„ํ‹ฐ(Activity)

์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” UI๊ตฌ์„ฑ์„ ์œ„ํ•ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์š”์†Œ์ด๋‹ค. ํ™”๋ฉด์— UI๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ ํ•˜๋‚˜์˜ activity๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์ง€๋งŒ ์ž์ฒด์ถœ๋ ฅ๊ธฐ๋Šฅ์ด ์—†๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์€ ๋ทฐ(view), ๋ทฐ๊ทธ๋ฃน(viewgroup)์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” setContentView๋ฉ”์„œ๋“œ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์•ˆ์— ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค.

 

์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ ์ถ”๊ฐ€

app์šฐํด๋ฆญ -> new -> activity

 

  1. onCreate() : ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ƒ์„ฑ, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”, setContentView()๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์•กํ‹ฐ๋น„ํ‹ฐ์— UI๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ

  2. onStart() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋ณด์—ฌ์ง€๊ธฐ ์‹œ์ž‘ํ•จ

  3. onResume() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ

  4. onPause() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐ€๋ ค์ง, ์‚ฌ์šฉ์ž๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋– ๋‚œ๋‹ค๋Š” ์‹ ํ˜ธ, ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ธ์…˜์„ ๋„˜์–ด์„œ ์ •๋ณด๊ฐ€ ์ง€์†๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ ์ ˆํ•œ ์ฝœ๋ฐฑ์ž…๋‹ˆ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ๋Œ์•„์˜ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ)

  5. onStop() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

  6. onRestart() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

  7. onDestroy() : ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์†Œ๋ฉธ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋ฐ›๋Š” ๋งˆ์ง€๋ง‰ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค.


์ธํ…ํŠธ(Intent)

์œ„์—์„œ ์ œ์‹œํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ„์˜ ์ž‘์—… ์ˆ˜ํ–‰์„ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

"Intent ๊ตฌ์„ฑ -> ์‹œ์Šคํ…œ -> Intent์ •๋ณด๋ฅผ ํ†ตํ•œ Component ์‹คํ–‰"

- ๋ช…์‹œ์  ์ธํ…ํŠธ(Explicit Intent)

์ธํ…ํŠธ์— ํด๋ž˜์Šค ๊ฐ์ฒด๋‚˜ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœ๋  ๋Œ€์ƒ์„ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

๋™์ผ app์—์„œ ๋‹ค๋ฅธcomponent์‹คํ–‰์‹œ

- ์•”์‹œ์  ์ธํ…ํŠธ(Implicit Intent)

ํ˜ธ์ถœ๋  ๋Œ€์ƒ์˜ ์†์„ฑ๋“ค์„ ์ง€์ •ํ–ˆ์ง€๋งŒ, ํ˜ธ์ถœ๋  ๋Œ€์ƒ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

 

์ธํ…ํŠธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

  • ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์‹œ์ž‘: startActivity(Intent), startActivityForResult(Intent, requestCode)
  • ์„œ๋น„์Šค์˜ ์‹œ์ž‘: startService(Intent), bindService(Intent)
  • ๋ธŒ๋กœ๋“œ์ผ€์ŠคํŠธ ์ „๋‹ฌ: sendBroadcast(Intent), sendOrderedBroadcast(Intent), sendStickyBroadcast()

ํ™”๋ฉด ์ „ํ™˜

Finish๋ฉ”์†Œ๋“œ : ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹คํ–‰ํ•œ ํ›„์— ๋‹ค์‹œ ์›๋ž˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

์ธํ…ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์ „ํ™˜์„ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button =  findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), MenuActivity.class);
                startActivity(intent);
                //์‹œ์Šคํ…œ์ชฝ์œผ๋กœ intent๋ฅผ ์ „๋‹ฌํ•˜๋ฉด์„œ ํ™”๋ฉด์„ ๋„์›Œ์คŒ
                //์‘๋‹ต์„ ๋ฐ›๊ณ ์‹ถ๋‹ค : startActivityForResult(intent, 101)
                //101 : ์š”์ฒญ ์ฝ”๋“œ
            }
        });

    }
}

 

728x90