안드로이드 개발 질문/답변
(글 수 45,052)
제가 뭘 잘못한 걸까요...? ㅠ
제가 드리는 힌트(?)를 보시구 짐작 가는 거라도...조언을 좀 해주세요...
static 변수로 두고 많은 엑티비티에서 참조하는 변수가 꽤 많이 있는데 그 중 하나의 변수의 초기값은 0 이고
최초 실행시 0이 찍히는게 맞는 상황입니다....
서비스를 구동하지 않게 만들어서 돌려보면 앱 실행, 종료, 실행, 종료 해보면 항상 0이 찍힙니다...
헌데 서비스를 구동하게끔 만들어서 돌려보면 최초실행만 0이찍히고 그 뒤로는 마지막 값을 가지고 있습니다...
그리고 apk 설치 후 최초 실행 후엔 아무 이상이 없는데
종료 프로세스를 탄 이후에(서비스는 살아있는데) 로그를 보면 GC_FOR_MALLOC을 계속 합니다....
이것들을 끊임없이 수행하면서 CPU 사용량이 50%에 육박하는것 같습니다...
자 제가 드릴 수 있는 힌트(?) 조건(?)은 이것입니다;;; ㅠㅠ 제발...이 수수께끼좀 풀어주세요...
p.s: 스태틱 변수가 살아있다.....종료 프로세스를 탄 후에 GC를 계속 한다....왠지 냄새가 솔..솔...나는것 같지 않나요...? ㅠ 하지만 잘 모르겠어요 ㅠ
제가 드리는 힌트(?)를 보시구 짐작 가는 거라도...조언을 좀 해주세요...
static 변수로 두고 많은 엑티비티에서 참조하는 변수가 꽤 많이 있는데 그 중 하나의 변수의 초기값은 0 이고
최초 실행시 0이 찍히는게 맞는 상황입니다....
서비스를 구동하지 않게 만들어서 돌려보면 앱 실행, 종료, 실행, 종료 해보면 항상 0이 찍힙니다...
헌데 서비스를 구동하게끔 만들어서 돌려보면 최초실행만 0이찍히고 그 뒤로는 마지막 값을 가지고 있습니다...
그리고 apk 설치 후 최초 실행 후엔 아무 이상이 없는데
종료 프로세스를 탄 이후에(서비스는 살아있는데) 로그를 보면 GC_FOR_MALLOC을 계속 합니다....
이것들을 끊임없이 수행하면서 CPU 사용량이 50%에 육박하는것 같습니다...
자 제가 드릴 수 있는 힌트(?) 조건(?)은 이것입니다;;; ㅠㅠ 제발...이 수수께끼좀 풀어주세요...
p.s: 스태틱 변수가 살아있다.....종료 프로세스를 탄 후에 GC를 계속 한다....왠지 냄새가 솔..솔...나는것 같지 않나요...? ㅠ 하지만 잘 모르겠어요 ㅠ




public void requestKillProcess(final Context context) {
Log.i("killProcess", "in");
new Thread(new Runnable() {
@Override
public void run() {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
String name = getApplicationInfo().processName;
while (true) {
List<RunningAppProcessInfo> list = am
.getRunningAppProcesses();
for (RunningAppProcessInfo i : list) {
if (i.processName.equals(name) == true) {
if (i.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
am.killBackgroundProcesses(getPackageName());
Thread.yield();
break;
}
}
}
}
}, "Process Killer").start();
finish();
}
위와 같은 종료 프로세스가 있습니다....
종료를 하고싶을때 루트엑티비티로 CLEAR_TOP 플래그와 함께 호출해서
위의 종료 프로세스를 탑니다....
==============================================================================
종료를 한 이후에 문제가 생기는 것 같아서 위의 종료 프로세스의 쓰레드 부분을 모두 주석처리
한 뒤에 finish() 만 하게끔 해서 apk 를 만들어서 실행해 보았습니다...
종료 한 뒤 GC가 무지하게 뜨면서 CPU 사용량ㅇ ㅣ50% 까지 올라가던 현상이 없어졌습니다...
저 종료 프로세스가 문젠가요? 그리고 루트 엑티비티에서 finish()만 하면 원래 종료가 되는 건가요?
작업관리자에 실행중인 어플목록에서 사라지는데 그럼 저 종료 프로세스는 뭐하러 타는 건가요..?
아......안드로이드 처음 접할때 처럼 멍....해지네요..
지금까지 알던것이 모두 거짓인 느낌....ㅠ