일부 정보가 들어있는 SMS 메시지를 가로 채고 있습니다. 그런 다음 내 SmsListener에서 상태 표시 줄에 표시 할 알림을 만들고 있습니다. 사용자가 알림을 클릭 할 때 그런 다음, I (예 : 활동이 존재하지 않는 아직 작성해야하는 경우)액티비티를 포어 그라운드로 가져 오는 방법 (또는 존재하지 않는 경우 생성)
- 일부 UI를 수행 SMS
- 에서 데이터를
- 패스 전경 MainActivity를 가져와 원하는 이 MainActivity에서이 데이터를 근거로 변경
내 활동
<activity
android:name=".MainActivity"
android:screenOrientation="sensor"
android:label="@string/app_name"
android:launchMode="singleTask"/>
으로 정의된다3210
활동
나는 방법 onNewActivity 오버라이드 (override) 한 내 활동 또한Intent i = new Intent();
i.setClass(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
으로 시작됩니다
@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
// I have data from broadcast in intent variable passed to this activity
processDataFromBroadcast(intent);
}
그것은 MainActivity이 이미 존재하는 경우 잘 작동하지만, MainActivity가 존재하지 않는 경우 그러나 onNewIntent 아니었다 시작
그런 다음 onCreate : processDataFromBroadcast(getIntent())
에서 processDataFromBroadcast를 호출하려고했습니다. 첫 번째 데이터가 내 브로드 캐스트에서 활동으로 올바르게 전달됩니다. 그러나 MainActivity가 백그라운드로 전송 된 다음 다시 foreground로 가져 오면 onCreate 또는 onNewIntent가 호출되고 processDataFromBroadcast가 브로드 캐스트로 전송 된 의도로 다시 실행되므로 내 MainActivity가 앱이 포 그라운드로 가져올 때마다 브로드 캐스트 데이터로 업데이트됩니다. 후자는 원하지 않습니다. 처음으로 처리 한 후이 의도를 잊어 버릴 수있는 방법은 무엇입니까? Here is sample application.
응답 해 주셔서 감사합니다. 그러나 질문에 대한 내 업데이트를 참조하십시오. – Solvek
활동에는 활동을 트리거 한 의도를 검색하는 getIntent() 메소드가 있습니다. 첫 번째 인스턴스화에 대한 의도 만 처리하려는 경우 onCreate()에서이 작업을 수행 할 수 있습니다. 아시다시피 onCreate()는 액티비티가 메모리에 없을 때만 호출됩니다. – rogerkk
흠, 죄송합니다. 벌써 해 보았으므로 업데이트 내용을 제대로 읽지 못했습니다. 난 당신이 내 애플 리케이션 중 하나에서 뭘하고 꽤 많이하고 있어요, 그리고 지금 볼 수있는 유일한 차이점은 내가 singleInstance launchmode를 사용하고, android : alwaysRetainTaskState를 true로 설정했다는 것입니다. 내 onCreate()는 활동을 다시 열 때 확실히 트리거되지 않습니다. – rogerkk