안드로이드 사용자 모임 게시판
(글 수 122)
아래 상하이리님 글을 보며 댓글을 내려 읽다가 본 글에서 문득 생각하게 만드는 대목이었습니다.
싸움을 건다기보다는
개인적으로 다른 점을 못찾겠어서요.
멀티태스킹이 어떻게 다른건지 모르겠네요.
안드로이드도 동시에 여러 앱이 실행되는 것이고,
아이폰도 동시에 여러 앱이 실행되는 것입니다.
그리고 아이폰이 솔직히 멀티태스킹을 막아놨다가 푼게 맞지 않습니까?
사실 개발자들이 엄청 성화를 냈던 부분입니다.
그래서 조금 풀어준 것 뿐이죠.
몇몇 글을 보기로는 7가지 멀티태스킹이 된다고 했던 것 같은데...
이 것도 다 되는 것은 아니죠.
막았다가 풀은 것이 아닙니까? 그럼 기술력이 안되는 것 아닙니까?
뭐.. 이런 식으로 다가가면 큰일 날 것 같고요 -_-;
여튼 뭐가 다른지 아이폰에 대해 아시는 분들 께서 답을 좀 해주셨으면 합니다.
lifecluee@gmail.com
2010.07.05 00:37:57
아이폰이 다른 폰들 특히 안드로이드 벤치 꽤하고 허용한듯...-_- 방식이 안드로이드의 그것과 비슷하죠.
다만, 아이폰은 여전히 어플들간의 데이터교환은 못해요. 멀티가 되어도 단지 돌아가는게 늘었는것뿐,
안드로이드는 서로간의 데이터를 공유해가며 서로 유기적으로 돌아갑니다.
2010.07.05 00:59:56
아이폰의 멀티태스킹에서는 백그라운드에서 소켓이 열린상태로 유지가 안되는등의 제약이 많다고 하더군요
즉 네이트온 같은건 백그라운드에서 돌지 못하기때문에 홈버튼이나 다른 어플로 전환하는 순간 로그아웃을 의미 합니다.
2010.07.05 02:06:30
(추천:
1 / 0)
iOS4부터 탑재된 멀티태스킹은 기존의 멀티태스킹과는 설계가 완전히 다릅니다.
안드로이드에 탑재된 멀티태스킹은 흔히 우리가 아는 시분할처리 방식의 멀티태스킹을 그대로 따릅니다.(PC 등에서의 멀티태스킹과 동일)
따라서 개발자는 앱을 개발할때 멀티태스킹에 대해 고민할 필요없이, 그냥 코딩하면 됩니다.
(물론 좋은 앱을 작성할 경우는 포어그라운드냐 백그라운드냐에 대한 고민이 들어갈 필요가 있긴 합니다만.)
앱 작성이 편리하다는 것은 큰 장점이지만, 많은 기능들이 프로그램이 실행되지 않을때도 실행되게 되므로, 배터리 소모가 크고, 의도치 않은 동작을 할 수가 있습니다.
한 예로 얼마전 광고가 탭재된 앱이 백그라운드에서 실행되는 동안 광고를 계속 갱신하면서 의도치 않은 통신/배터리 사용을 하는 문제도 있었습니다.
그에 비해서 iOS4에 탑재된 멀티태스킹은 같은 용어를 사용하더라도 개념이 완전히 다릅니다. 2가지 동작모드를 갖는데, 첫번째는 패스트스위칭이고 두번째는 백그라운드 태스킹이죠.
패스트 스위칭은 앱을 종료할 때 완전히 종료하는 것이 아니고, 현재의 상태를 그대로 메모리에 보존하고 다음 실행할 때는 그 상태 그대로 돌아오게 됩니다. 이 경우 그 앱이 백그라운드에 있는 동안 장치는 그 앱과 관련된 어떠한 작업도 하지 않습니다.
백그라운드 태스킹은 VoIP나 IM등의 앱등과 같이 그 앱이 사용자 눈에 보이는 실행상태가 아니더라도 통신을 사용해야하는 경우등에 적용됩니다. 이 경우 앱의 모든 부분이 실행되는 것은 아니고 그 앱이 요청하는 특정 태스크만 OS관리하에 실행되게 됩니다.
그리고 가장 중요한 것은 두가지 기능이 모두 개발자가 코딩시 일부러 요청할 경우에만 구현이 됩니다.
정리하면 기존의 멀티태스킹과 비교하여 CPU/통신(물론 배터리도) 사용량이 전혀 없거나 극히 적으면서 사용자가 느끼기에는 큰 차이가 없는 멀티태스킹이 구현된 것입니다.
다만 단점은 개발자가 이러한 구현을 일부러 해주어야 한다는 것이지요.
(개인적으로 무분별하고 불필요한 백그라운드 태스크가 줄어들게 되어 사용자 입장에선 좋을 것 같습니다.)
기존의 시분할처리방식의 멀티태스킹과 애플이 새로 제안한 멀티태스킹 모두 장단점이 있습니다. 그러므로 어떠한 방법이 더 좋다라고 말하기는 애매하지만, 저는 개인적으로 애플의 방식이 모바일에서는 더 적합해 보입니다.
2010.07.05 02:59:49
이제야 이해가 되는군요...
얼마전 아이폰을 쓰는 분께 도대체 아이폰의 멀티태스킹은 어떻게 구현이 되느냐라고 물어더니 멀티태스킹을 지원하는 API가 있다라는 대답을 들었습니다.
이해가 안되어서 논의가 좀 있었는데 재구님 글로 이해가 잘 되는군요...
그런데 Time Sharing 방식의 멀티태스킹이라도 일반적으로는 전력 소모량은 그렇게 많은 차이가 나지 않을 것 같다는 생각이 듭니다.
한번에 하나의 애플리케이션만 Active 상태일테고 애플리케이션 대부분이 이벤트(인터럽트) 기반이라 백그라운드(안드로이드에서 말하는 백그라운드가 아님)에서 돌아가는 상태에서는 애플리케이션 때문에 수행하는 명령이 그렇게 많지 않을테니깐요. ^^
안드로이드 OS를 아직 잘 모르고 그냥 MCU만 조금 다루어본 경험에서 해본 생각입니다. ^^
얼마전 아이폰을 쓰는 분께 도대체 아이폰의 멀티태스킹은 어떻게 구현이 되느냐라고 물어더니 멀티태스킹을 지원하는 API가 있다라는 대답을 들었습니다.
이해가 안되어서 논의가 좀 있었는데 재구님 글로 이해가 잘 되는군요...
그런데 Time Sharing 방식의 멀티태스킹이라도 일반적으로는 전력 소모량은 그렇게 많은 차이가 나지 않을 것 같다는 생각이 듭니다.
한번에 하나의 애플리케이션만 Active 상태일테고 애플리케이션 대부분이 이벤트(인터럽트) 기반이라 백그라운드(안드로이드에서 말하는 백그라운드가 아님)에서 돌아가는 상태에서는 애플리케이션 때문에 수행하는 명령이 그렇게 많지 않을테니깐요. ^^
안드로이드 OS를 아직 잘 모르고 그냥 MCU만 조금 다루어본 경험에서 해본 생각입니다. ^^
2010.07.05 08:27:32
저도 애플의 제한적인 방식이 모바일에 더 적합하다는 생각입니다.
안드로이드의 방식은 자유롭지만 그만큼 사용자에게 신경쓰이게 만드는 존재기도 합니다.
실예로, 게임을 실행하다가 갑자기 나갈일이 있어서 홈버튼으로 이동하고 sleep 모드로 전환후 업무를 보고 왔습니다.
그사이 게임은 쉴새없이 돌아서 배터리를 어마어마하게 녹이고 있더군요. 물론 폰의 발열도 장난아니구요.
개발자의 방식에 차이겠지만, sdk에서 어느걸 디폴트로 잡느냐, 어느걸 권장하느냐의 차이도 많은것 같습니다.
모바일은 단순히 퍼포먼스 문제 이외에 통신에 드는 비용과 배터리의 사용시간도 매우 중요한 요소이기 때문입니다.
안드로이드의 방식은 자유롭지만 그만큼 사용자에게 신경쓰이게 만드는 존재기도 합니다.
실예로, 게임을 실행하다가 갑자기 나갈일이 있어서 홈버튼으로 이동하고 sleep 모드로 전환후 업무를 보고 왔습니다.
그사이 게임은 쉴새없이 돌아서 배터리를 어마어마하게 녹이고 있더군요. 물론 폰의 발열도 장난아니구요.
개발자의 방식에 차이겠지만, sdk에서 어느걸 디폴트로 잡느냐, 어느걸 권장하느냐의 차이도 많은것 같습니다.
모바일은 단순히 퍼포먼스 문제 이외에 통신에 드는 비용과 배터리의 사용시간도 매우 중요한 요소이기 때문입니다.
2010.07.05 04:36:31
안드로이드가 시분할이라니요;;; 어플 나갈때 분명히 pause 됩니다 그래서 액티비티에 onPause onResume이 있는거구요 포어그라운드에 없을때 뭔가를 돌리려면 스레드계열이나 서비스로 돌려야됩니다; ;;;
2010.07.05 04:49:10
참고로 시분할이 아니라고 한건 pc os같은 시분할이 아니라는뜻입니다. 안드로이드가 이전까지 상대적으로 아이폰보다 느리다보니 구글이 그렇게 무식하게 설계했을거라고 생각하시는 분들이 실제로 많더군요. 느린이유는 어플들이 freeze 되지않기때문이 아니라 느린 cpu와 느린 메모리 반환과정(이건 프로요에서 해결)에서 일어나는 렉때문이었습니다. 아이폰은 멀테가 쾌적할만큼 고사양폰을 내놓으면서 멀테를 추가했기에 안드로이드와 비교하면서 그런 말이 나오는것 같네요.
2010.07.05 10:26:17
음... 저는 갤럭시스를 사용하고 있습니다. 바탕에 항상 작업 관리자가 떠있죠.
친구가 아이폰 3Gs 를 업그레이드해서 씁니다. 그 친구도 이것저것 하다가 홈버튼을 길게 눌렀던가 어쨌던가;
하더니 뭐 쓰던 어플을 막 닫던데요;
그럼 굳이 닫을 필요는 없단 말씀인가요?
안닫아도 홈에 와 있는이상 배터리를 먹진 않는다는 말씀이신가요?
2010.07.05 12:05:46
iOS4에는 네트워크 문제로 CPU를 과다 사용하는 문제가 있었습니다. 계정 및 설정 재설정을 통해서 문제를 해결하는 방법이 잠시 알려졌었고, 현재는 애플이 공식 패치를 내 놓은 상태입니다.
그런데 이런 문제로 속도가 느려지고, 배터리 소모가 증가하자 멀티태스킹 기능이 구현되면서 생긴 부작용으로 생각하고 사용안하는 앱을 닫는 응급조치를 했었는데, 태스크가 정리되서 인지는 모르겠지만 확실히 체감속도가 올라갔죠.
그런데 사실 필요없는 행동이라고 합니다. iOS4도 안드로이드랑 비슷하게 메모리가 더 필요하면 가장 오래된 앱부터 메모리에서 내려버리고 필요한 메모리를 확보하는 기능이 있습니다. 그리고 메모리 반환 속도가 체감 성능에 영향을 줄 정도는 아닙니다.
대부분의 아이폰용 앱은 백그라운드 태스크가 없고 단지 다음의 빠른 실행을 위해서 메모리에 상주하고 있을 뿐입니다. 그나마 메모리가 추가로 필요한 상황에서는 OS가 자동으로 메모리 정리를 해줍니다. 먹통이 된 앱이 있을 경우에 한해서만 강제종료해주시면 됩니다. (안드로이드와 비슷하네요.^^)
만약 속도 저하/배터리 과다 소모를 느끼신다면, 관련 패치를 설치하시면 문제가 해결됩니다.
2010.07.05 11:06:10
(추천:
1 / 0)
안드로이드의 멀티태스킹에 관한 글이 있어 올려드립니다.
재구님이 쉽게 표현하려 하시다보니 오해의 소지가 있는 부분이 있는 것같아
그냥 구글에서 안드로이드 개발한 분의 포스팅을 해석한 포스팅이 있어 링크를 걸어드리겠습니다.
꽤 장문이지만 쉽게 이해할 수 있으실 거에요.
http://blog.naver.com/huewu/110085391353
제가 이해한 것을 짧게 정리하자면,
안드로이드는 개발자가 백그라운드에서 앱을 계속돌릴 것인지 아니면 현재 상태를 저장 후 종료 할 것인지를 선택할 수 있으며,
백그라운드에서 앱을 계속 수행하게 될 때, 그 앱의 숫자가 메모리에서 감당할 수 있는 숫자가 넘어가게 된다면,
자동으로 프로그램을 종료하게 하는 것에 대한 내용이 담겨 있습니다.
애플의 아이폰의 경우는 정확하게 모르겠지만, 이 백그라운드 서비스 자체의 종류에 제한(7가지)을 둔 것이라고 저는 이해했는데
그것이 맞는지 모르겠습니다.
재구님이 쉽게 표현하려 하시다보니 오해의 소지가 있는 부분이 있는 것같아
그냥 구글에서 안드로이드 개발한 분의 포스팅을 해석한 포스팅이 있어 링크를 걸어드리겠습니다.
꽤 장문이지만 쉽게 이해할 수 있으실 거에요.
http://blog.naver.com/huewu/110085391353
제가 이해한 것을 짧게 정리하자면,
안드로이드는 개발자가 백그라운드에서 앱을 계속돌릴 것인지 아니면 현재 상태를 저장 후 종료 할 것인지를 선택할 수 있으며,
백그라운드에서 앱을 계속 수행하게 될 때, 그 앱의 숫자가 메모리에서 감당할 수 있는 숫자가 넘어가게 된다면,
자동으로 프로그램을 종료하게 하는 것에 대한 내용이 담겨 있습니다.
애플의 아이폰의 경우는 정확하게 모르겠지만, 이 백그라운드 서비스 자체의 종류에 제한(7가지)을 둔 것이라고 저는 이해했는데
그것이 맞는지 모르겠습니다.
2010.07.05 11:43:32
(추천:
1 / 0)
아이폰 개발에 대해서는 잘 모르지만, 들은 바로는 기본적으로 재구님이 써 주신 대로고, 대신 백그라운드 태스킹으로 실행 가능한 기능이 제한되어 있다고 알고 있습니다. 몇 가지 서비스(발표한 7가지)에 대해 백그라운드 태스킹용 API를 별도로 마련해 두고, 필요한 경우 이 API를 호출해서만 백그라운드 작업이 가능하도록 한 거죠. 어떠한 작업이건 백그라운드에서 실행할 수 있고, 필요에 따라서는 실행 중인 프로세스 간에 자유롭게 데이터를 교환할 수 있는 안드로이드에 비해 굉장히 제한적이라고 할 수 있습니다. 물론 제한적인 만큼 그만한 이득(리소스 관리 등)도 있겠죠.