본문 바로가기
Adroid Studio

Android Studio_안드로이드 스튜디오_4대컴포넌트_액티비티-1

by 디디찐 2022. 8. 26.
반응형

■ 안드로이드의 4대 컴포넌트


안드로이드의 4대 컴포넌트에는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더가 있다.

 

  • 액티비티: 화면을 구성하는 가장 기본적인 컴포넌트
  • 서비스: 화면과 상관없이 백그라운드에서 동작하는 컴포넌트 / 생성 ->시작 -> 종료    ex)백신
  • 브로드캐스트 리시버: 여러 응용프로그램이나 장치에 메시지 전달하기 위해 방송메시지 사용 ex)배터리 방전알람
  • 콘텐트 프로바이더: 응용프로그램 사이에 데이터를 공유하기 위한 컴포넌트, 처리된 데이터는 일반적으로 DB 혹은 파일로 저장된다.

■액티비티

액티비티는 사용자에게 보여주는 화면을 만들기 때문에 안드로이드의 4개 컴포넌트 중 가장 핵심적인 요소다
안드로이드폰에 나타나는 화면 하나하나를 말하며 ,액티비티 하나당 화면 하나라고 볼 수 있다.

■여러개의 액티비티를 만드는 법

1)  [New] - [Activity]-[Empty Activity] 클릭 시 activity.xml 자동 생성된다.

* [New] - [Java Class]로 생성해도 되지만 이 경우 xml 파일이 자동으로 생성되지 않는다.

 


2) [manifests] - [AndroidManifest.xml]에  SubActivity에 대해 <activity></activity>가 자동으로 생성된 것을 확인할 수 있다.

 

*자동으로 생성되지 않았을 경우 직접 입력

 


3) 화면 디자인 및 편집 - xml 작성

 

메인 페이지의 EditText에 입력한 문자를 서브페이지에 전달해서 화면에 표시

 

- activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="horizontal">

    <EditText
        android:id = "@+id/edit_text"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        ></EditText>

    <Button
        android:id = "@+id/btn_move"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이동"
        ></Button>


</LinearLayout>

- activity_sub.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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:gravity="center_vertical|center_horizontal"
    tools:context=".SubActivity">

    <TextView
        android:id = "@+id/subText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="서브 액티비티"
        android:textSize = "30dp"
        ></TextView>

</LinearLayout>

 

4) 자바코드 작성 및 수정

 

-MainActivity.java

package com.androidpark.Activities;

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

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private Button btn_move;
    private EditText edit_text;
    private String str;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("메인페이지");

        btn_move = (Button)findViewById(R.id.btn_move);
        edit_text = (EditText)findViewById(R.id.edit_text);


        btn_move.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                str = edit_text.getText().toString();
                Intent intent = new Intent(MainActivity.this,SubActivity.class); // 해당 링크로 이동
                intent.putExtra("str",str);
                startActivity(intent); // 새로운 액티비티를 화면에 출력하는 메소드
            }
        });

    }
}

✅ intent 인텐트 생성

Intent intent = new Intent(메인액티비티 , 인텐트에 포함될 액티비티.class)

  • 메인액티비티 => getApplicationContext() = MainActivity.this 둘 중에 하나로 작성
  • 인텐트에 포함될 액티비티의 경우 뒤에 꼭 .class 를 붙여야 한다.

intent.putExtra("str",str) 는 데이터를 인텐트에 넣은 다음 startActivity()로 인텐트를 다른 엑티비티로 넘긴다.


-SubActivity.java

 

package com.androidpark.Activities;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SubActivity extends AppCompatActivity {
    private TextView subText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        setTitle("서브페이지");

        subText = (TextView)findViewById(R.id.subText);
        Intent intent = getIntent();
        String str = intent.getStringExtra("str");

        subText.setText(str);

    }
}

✅ intent 전달 받기

getStringExtra("str")은 메인 엑티비티에서 전달한 인텐트를 받는다. 

 


인텐트와 액티비티

 

Android Studio_안드로이드 스튜디오_컴포넌트_액티비티-2

■단방향 액티비티 한쪽 방향으로 데이터를 전달하는 방법이다. putExtra()를 이용하여 필요한 만큼의 데이터를 인텐트에 넣은 다음 startActivity()로 인텐트를 다른 엑티비티로 넘긴다. 인텐트를 받

jjin-todo.tistory.com

서비스, 브로드캐스트,콘텐트 프로바이더

 

Android Studio_안드로이드 스튜디오_4대컴포넌트_서비스, 브로드캐스트 리시버,콘텐트 프로바이더

■서비스 일반적으로 화면 없이 동작하는 프로그램을 말한다. 다른 말로는 데몬(daemon), 백그라운드 프로세스(background process)라고도 한다. 음원 스트리밍 앱과 같이 다른 작업을 하면

jjin-todo.tistory.com

 

반응형