경험의 기록

안드로이드에서

액티비티를 실행하는 코드를 반복실행할 수 있는 경우 ( 자신 액티비티를 띄울 수 있는 기능이 있는 경우, 노티피케이션에 액티비티를 띄울 수 있는 기능을 추가 했을 때 반복 클릭하는 경우)

 

중복 실행이 되는 경우가 발생한다.

 

이때에는

 

intent.action = Intent.ACTION_MAIN
intent.addCategory(Intent.CATEGORY_LAUNCHER)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

인텐트에 액션을 ACTION_MAIN으로 설정해주고,

카테고리를 추가해주고, flags를 NEW TASK로 설정해주게 되면,

이미 실행되어 있을 경우 실행하지 않게 된다.

 

예를 들어

Intent intent= new Intent(this, MainActivity.class)
    .action(Intent.ACTION_MAIN)
    .addCategory(Intent.CATEGORY_LAUNCHER);
    .flags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent);

이렇게 사용할 수 있으며

 

노티피케이션에서도

// PendingIntent 추가
    @ServiceScoped
    @Provides
    fun provideMainActivityPendingIntent(
        @ApplicationContext context : Context
    ) = PendingIntent.getActivity(
        context,0,
        Intent(context, MainActivity::class.java).also {
            it.action = Intent.ACTION_MAIN
            it.addCategory(Intent.CATEGORY_LAUNCHER)
            it.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        }, PendingIntent.FLAG_UPDATE_CURRENT
    )!!

동일하게 사용할 수 있다

위의 예시는 Dagger를 사용하였다.

 

참고

https://like-tomato.tistory.com/156

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading