본문 바로가기
안드로이드

[Android] Singleton

by 엘딘 2022. 3. 31.

Singleton: 단 하나의 instance

  / 인스턴스를 단 한번만 Static 메모리 영역에 할당하고 이 객체를 여러곳에서 호출하더라도 실제로 생성은 최초의

    인스턴스만 사용

MainActivity에서 name/list/array를 통해 

singleton 클래스를 거쳐 Sub activity로 데이터 넘겨줌

 

activity_main.xml
<EditText
        android:layout_width="327dp"
        android:layout_height="75dp"
        android:inputType="textPersonName"
        android:text="Name"
        android:ems="10"
        android:id="@+id/editText"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.49"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintHorizontal_bias="0.501"/>

<Button
        android:id="@+id/move"
        android:text="Button"
        android:layout_width="152dp"
        android:layout_height="59dp"
        app:layout_constraintTop_toBottomOf="@+id/editText"
        android:layout_marginTop="44dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

 

activity_sum.xml
<TextView
        android:id="@+id/textView"
        android:text="TextView"
        android:textSize="30dp"
        android:layout_width="366dp"
        android:layout_height="84dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

 

MainActivity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val editText = findViewById<EditText>(R.id.editText)
        val move = findViewById<Button>(R.id.move)

        move.setOnClickListener{
            // Singleton의 chicken을 통해 데이터 전달하기 위해서 chicken을 호출
            Singleton.chicken = editText.text.toString()

            //이동
            val intent = Intent(this, SubActivity::class.java)
            startActivity(intent)
        }

    }
}

 

Singleton(class)
// main에서 접근해서 서버에서도 접근 가능하도록?
class Singleton {
    companion object{
        // chicken을 통해 데이터 전달
        var chicken:String? = null
    }
}

 

SubActivity
class SubActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sub)

        val textView = findViewById<TextView>(R.id.textView)

        textView.text = Singleton.chicken

    }
}

'안드로이드' 카테고리의 다른 글

[Android] 동적버튼  (0) 2022.04.03
[Android] SQLite  (0) 2022.04.02
[Android] Preferences  (0) 2022.03.31
[Android] Json  (0) 2022.03.31
[Android] File(추후 작성)  (0) 2022.03.31

댓글