내 안드로이드 앱에서 클릭 할 때 다른 활동이 열리는 버튼이 있습니다. 문제는 사용자가 해당 버튼을 여러 번 빠르게 두드 리면 새로운 활동이 많이 열리게된다는 것입니다. 한 번에 하나의 활동 만 열 수 있도록 강제로 수행 할 수 있습니까?android에서 활동 인스턴스를 하나만 표시하는 방법은 무엇입니까?
나는, 버튼을 비활성화하거나 로딩 화면을 바르지
내 안드로이드 앱에서 클릭 할 때 다른 활동이 열리는 버튼이 있습니다. 문제는 사용자가 해당 버튼을 여러 번 빠르게 두드 리면 새로운 활동이 많이 열리게된다는 것입니다. 한 번에 하나의 활동 만 열 수 있도록 강제로 수행 할 수 있습니까?android에서 활동 인스턴스를 하나만 표시하는 방법은 무엇입니까?
나는, 버튼을 비활성화하거나 로딩 화면을 바르지
, 당신은 FLAG_ACTIVITY_SINGLE_TOP
와 함께 활동을 시작할 수 있습니다. 이미 인스턴스가 표시되면 새 인스턴스가 만들어지지 않습니다. 원유 예 :
btn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(MainActivity.this, CalledActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
}, 1000);
}
});
신속한 누름 버튼하면 텐트 플래그없이 CalledActivity
의 인스턴스를 생성한다.
설정 Intent.FLAG_ACTIVITY_SINGLE_TOP
을 큰 일을 피하려고. 이렇게하면 하나의 활동 인스턴스 만 생성됩니다.
이 옵션이 설정되면 활동이 이미 기록 스택 맨 위에서 실행 중이면 활동이 실행되지 않습니다. 시나리오가 당신이 설명하는 것처럼 간단한 경우
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP
1 초 후에 실행해야하는 이유는 무엇입니까? 필요한 타이밍 문제가 있습니까? – omega
@omega 아니, 전혀! 그것은 단지 당신이 묘사하는 "버튼을 여러 번 누르십시오"문제를 쉽게 재현 할 수있는 예입니다. :) – matiash