Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[Android] Splash, Handler 본문

인프런/[인프런] 앱 8개를 만들면서 배우는 안드로이드 코틀린

[Android] Splash, Handler

Seung__ 2022. 3. 17. 16:29

1. Splash Screen


 - 스플래시 스크린은 앱 구동시 보여주는 화면임.

 

2. Handler


Main thread가 있고 별도의 Thread가 있다고 해보자.

만약 두 thread가 동시에 textView의 setText를 실행한다고 가정하자.

- MainThread: setText("from Main")

- BThread: setText("from B")

이렇게 동시에 시도하면 문제가 발생한다.

 

따라서 MainThread가 아닌 Thread는 Handler를 사용한다.

 

Handler의 역할은 MainThread로 다른 Thread의 message를 전달하는 것이다.

 

즉 위와 같은 경우는 BThread가 setText("from B")라는 내용을 message에 담아 Handler를 통해 MAinThread로 message를 전달한다.

 

MainThread는 이 message를 받아서 처리한다.

 

3. Splash 예제


  - SplashActivity 구동 후 MainActivity로 전환시키는 방식

  - 아무 설정을 안하면 MainActivity가 실행된다.

  - MainActivity말고 바로 SplashActivity가 실행되도록 변경하자.

  - AndroidManifest.xml에서 <intent-filter>부분을 SplashActivity로 옮기자.

  - exported는 true로 설정

<activity  android:name=".SplashActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".MainActivity"
    android:exported="true">
</activity>

 

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

        //3000ms후에 MainActivity로 넘김
        Handler().postDelayed({
          startActivity(Intent(this, MainActivity::class.java))
          finish()
        }, 3000)
    }
}

 

Comments