안드로이드에서
액티비티를 실행하는 코드를 반복실행할 수 있는 경우 ( 자신 액티비티를 띄울 수 있는 기능이 있는 경우, 노티피케이션에 액티비티를 띄울 수 있는 기능을 추가 했을 때 반복 클릭하는 경우)
중복 실행이 되는 경우가 발생한다.
이때에는
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