Android

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ์ธํ…ํŠธ(Intent) : ๋‘ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ

567Rabbit 2024. 6. 7. 12:43

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

 

ํ™œ๋™ ์ˆ˜๋ช… ์ฃผ๊ธฐ  |  Android Developers

ํ™œ๋™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ „ํ™” ๊ฑธ๊ธฐ, ์‚ฌ์ง„ ์ฐ๊ธฐ, ์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ ๋˜๋Š” ์ง€๋„ ๋ณด๊ธฐ์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ™œ๋™์—๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜

developer.android.com

 

 

 

 

์ธํ…ํŠธ(Intent)์˜ ์šฉ๋„

1.  ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์‹œ์ž‘: ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ

 

2. ์„œ๋น„์Šค(Service) ์‹œ์ž‘: ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ

 

3. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ (BroadcastReceiver): ์‹œ์Šคํ…œ ๋˜๋Š” ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ ์‚ฌ์šฉ

 

 

 

 

 

package com.yujinoh.lifecycle;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;


public class MainActivity extends AppCompatActivity {

    // ๋ฉค๋ฒ„๋ณ€์ˆ˜
    Button button;
    TextView textView;
    EditText editName;
    EditText editAge;
    TextView txtAge;

    // **์ค‘์š”** ๋‚ด๊ฐ€ ์‹คํ–‰ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์„ ๋•Œ ๋ฉค๋ฒ„๋ณ€์ˆ˜, ๊ฐ์ฒด ์ƒ์„ฑ
    ActivityResultLauncher<Intent> launcher =
            registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                    new ActivityResultCallback<ActivityResult>() {
                        @Override
                        public void onActivityResult(ActivityResult o) {
                            Log.i("LIFE MAIN", "onActivityResult ์‹คํ–‰");
                            //๋‚ด๊ฐ€ ์‹คํ–‰ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ๋ถ€ํ„ฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ถ€๋ถ„ ์ฝ”๋“œ
                            if (o.getResultCode() == 1000){
                                Log.i("LIFE MAIN", "second Activity๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ฐ›๋Š” ๋ถ€๋ถ„");
                                int age = o.getData().getIntExtra("age", 0);
                                txtAge.setText("10๋…„ ํ›„ ๋‚˜์ด๋Š” " + age + "์‚ด");
                            }
                        }
                    });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("LIFE MAIN", "onCreate ์‹คํ–‰");

        button = findViewById(R.id.button);
        textView = findViewById(R.id.textView);
        editName = findViewById(R.id.editName);
        editAge = findViewById(R.id.editAge);
        txtAge = findViewById(R.id.txtAge);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name = editName.getText().toString().trim();
                String strAge = editAge.getText().toString().trim();

                int IntAge = Integer.parseInt(strAge);

                // ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ์ฝ”๋“œ
                // ์ธํ…ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค
                // ์ธํ…ํŠธ๋ž€ ์–ด๋–ค ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์–ด๋–ค ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šฐ๊ฒ ๋‹ค๋ผ๋Š” ์˜๋„
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);

                //์•กํ‹ฐ๋น„ํ‹ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•
                intent.putExtra("name", name);
                intent.putExtra("age", IntAge);

                // startActivity(intent);

                launcher.launch(intent);
            }
        });
    }


    @Override
    protected void onStart() {
        super.onStart();
        Log.i("LIFE MAIN", "onStart ์‹คํ–‰");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("LIFE MAIN", "onResume ์‹คํ–‰");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("LIFE MAIN", "onPause ์‹คํ–‰");

        textView.setText("Hello~~~");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("LIFE MAIN", "onStop ์‹คํ–‰");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("LIFE MAIN", "onDestroy ์‹คํ–‰");
    }
}

 

 

 

 

 

 

package com.yujinoh.lifecycle;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.OnBackPressedCallback;


public class SecondActivity extends AppCompatActivity {

    TextView txtName;
    TextView txtAge;

    int age;

    @SuppressLint("MissingInflatedId")

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onCreate ์‹คํ–‰");

        // ๋ฐ์ดํ„ฐ๊ฐ€ ๋„˜์–ด์˜จ๊ฒŒ ์žˆ์œผ๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์ค€๋‹ค.
        String name = getIntent().getStringExtra("name");
        age = getIntent().getIntExtra("age", 0);

        age = age + 10;

        txtName = findViewById(R.id.txtName);
        txtAge = findViewById(R.id.txtAge);

        txtName.setText("์ด๋ฆ„์€ " + name);
        txtAge.setText("10๋…„ ํ›„ ๋‚˜์ด๋Š” " + age + "์„ธ");


        // ๋ฐฑ(back) ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ
        getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true) {
            @Override
            public void handleOnBackPressed() {
                // ๋ฉ”์ธ์•กํ‹ฐ๋น„ํ‹ฐ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ
                Intent intent = new Intent();
                intent.putExtra("age" , age);
                setResult(1000, intent);
                finish();
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onStart ์‹คํ–‰");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onResume ์‹คํ–‰");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onPause ์‹คํ–‰");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onStop ์‹คํ–‰");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("LIFE MAIN", "๋‘๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ onDestroy ์‹คํ–‰");

    }

}