안드로이드 개발 질문/답변
(글 수 45,052)
앱을 하나 실행 했습니다.
그 앱에서... 사용자가 홈키나, back키, 눌렀을때 혹은 홈키롱클릭으로 작업관리자에서 강제종료 또는 전원버튼으로 핸폰 종료 했을때..
앱에서 위와 같은것을 시행하기 전에 어떤 이벤트를 발생 시킬수 있나요??
2011.12.28 17:59:35
@시루떡, Vermond
우선 답변을 주셔서 감사 합니다.
제 질문이 너무 두서가 없었군요... 죄송합니다.
말씀하신 onPause, onStop, onDestroy 는 전원버튼, 홈버튼 백버튼 일때만 호출을 받더라구요.
홈버튼 롱클릭, 전원버튼 롱클릭 일때는 onPause, onStop, onDestroy이것을 호출 하지 않기에.. 질문 드렸습니다.
홈, 전원 버튼 롱클릭을때 호출하는 메소드가 있을까요?? [처음부터 이렇게 질문을 했어야 하는데.. 죄송합니다]
2011.12.28 18:02:14
다들 오해하시는게 아닌가 싶어요
질문하신분은 액티비티에서 떠다는게 아니라 어플 자체가 종료되었을때를 묻는거 같습니다.
화면 한개한개에 대한 onStart onPasue를 사용해 어플종료를 알수있게 만들수 있겠지만 보통일이 아니구요
강제종료등에대해서는 또 답이없죠
백그라운드 상태일때도 물론 답이 없구요.
완벽하게 하려면 머리 굉장히 잘써서 복잡하게 만드셔야 할거에요
전 별수없이 백그라운드 서비스에서 최상위 액티비티를 얻어와 판단하고 있습니다.
2011.12.28 18:06:34
@JI2SOFT
님~! 이해해 주셔서 감사 합니다~! ^^;
그런데.. 최상위 엑티비를 얻어와 판단한다는건.. 어떤방법인가요? 감을 잡을 수가 없네요... 좀... 알려주세요~~!
2011.12.28 20:14:19
ActivityManager am = (ActivityManager)
this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfoList = am.getRunningTasks(1);
ComponentName curStack = null;
try {
curStack = taskInfoList.get(0).topActivity;
String curPackageName = curStack.getClassName();
if (curPackageName.equalsIgnoreCase("your.package.name") {
//무시
}
else{
// noti 처리
}
}
이 코드 한번 참조해보세요. 저도 얼마전에 다른분 댓글을 갈무리해두었네요.
액티비티에서는 위와같은 상황에 onPause, onStop, onDestroy 등을 호출 받습니다. 근데 질문이, 기본적인 것을 학습도 하지 않으시고 물으시는듯 하네요. life cycle 정도에 대해서는 숙지하셔야 개발을 하죠...