- 공지사항 필독 했습니다 ^^

 

안녕하세요, 요즘 안드로이드용 위젯을 개발하고 있는 개인 개발자 입니다.

다름이 아니라 위젯 개발이 생각보다 어렵더군요 ㅠ_ㅜ

안드로이드 기기들은 핸드폰마다 호환성 문제도 대단하고요...

=> 인터넷을 아무리 검색하고(영어 구글링까지) 관련자료를 찾아봐도 해결방법에 대한 글을 찾지 못해서 문의 드립니다.

=> 모토로라 모토데브 들어가 봐도;; 자세히 설명해 주지 않더군요... 이런 나쁜놈들 ㅠ_ㅜ

 

그런데 개발하면서 이건좀 아닌데 하는 문제를 발견해서,

위젯 개발하시는 분들 중에 같은 현상을 격으신 분들이 있는지 문의 드립니다.

(혹시 해결하신 분들도 있나 문의 드립니다)

호환성 문제 같은경우 서로 공유하면, 나중에 개발하시는 분들도 좋은 참고가 될것 같아서요...

 

 

문의 내용...

현재 앱 위젯 개발을 하고 있는데.

특정 주기마다 업데이트 스레드를 통해서 위젯을 업데이트 하고 있습니다.

(스레드를 쓰든 알람을 써서 하든 ^^ 특정 주기마다 하는것은 마찬가지...)

(단순히 위젯의 리시버로 업데이트 메시지 올때만 업데이트 하면 좋겠지만)

(상태에 따라 종종 업데이트 해야되서 그럴 수 있는 상태가 아니라서요...)

위젯 업데이트시 고려 사항을 모두 체크했고요 (리모트뷰 업데이트 용량 문제라든지...)

정상적으로 디버깅해서, 로그에 위젯이 업데이트 되고 있는 것을 확인 했습니다.

물론 로그상에 오류나거나 하는 것도 없고요...

 

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance( mContext );

...

RemoteViews views = new RemoteViews( mPackageName, R.layout.widget );

...

views.setImageViewBitmap( R.id.widget_img, TempBitmap );

...

appWidgetManager.updateAppWidget( WidgetID, views );

 

일반적으로 업데이트하는 방식대로 업데이트 했죠...

 

그런데,

테스트 기종 아트릭스 (안드로이드 2.3.4 :  SW버전 4.5.2A)

의 기본 홈런처에서 아래와 같은 현상이 일어나는데 같은현상 격으셨거나, 해결방법 찾으신 분들계시면 답변좀 부탁드려요.

 

 

아트릭스 기본 홈런처의 경우,

위젯 업데이트 요청하는 시점에. 기본 홈런처가 포그라운드(화면에) 띄워져 있는 상태가 아니고.

다른 액티비티가 포그라운드 (게임을 한다든지, 설정화면에 들어갔다든지 다른 액티비티가 띄워진 모든 상태)이면

위젯의 업데이트가 이루어지지 않습니다. ㅡㅡ;;

즉, 홈런처가 띄워져 있어서 위젯들이 화면에 보이는 상태가 아니라면,

아무리 백그라운드에서 (알람이든 스레드든)위젯업데이트 시도를 해도.

나중에 홈을 띄워 보면 옛날의 위젯상태가 계속 보여지는...

=> 당현히 에뮬레이터에서는 정상 업데이트 처리 잘됩니다;; 포그라운드가 아니더라도...

 

혹시나 업데이트 주기가 빨라서 그런가 하고, 홈런처 띄워져 있는 상태로 잘 업데이트 되나 봤는데 업데이트가 잘됩니다...

주기도 그렇게 빠른것이 아니라서 주기 문제는 아닌듯 보이고요...

 

=> RemoteViews 라는게, 저쪽~ 안드로이드 내부적으로 업데이트를 요청하는것이라서.

개발자 입장에서 작성한 코드내의 로그 만으로 확인하는데는 한계가 있어서...

결국 안드로이드 위젯 업데이트 관련 기본적인 내부 소스코드들을 뜯어 보았는데요.

ㅡㅡ 기본소스 코드에는 홈런처가 포그라운드여야지 위젯이 업데이트가 된다 같은 내용이 없는듯 보이더군요...

모토로라에서 자체적으로 안드로이드 코드를 커스텀한것 같은데.

모토로라에서 공개한 커널 소스에는 당현한 이야기지만 커널코드만 있어서;; 위젯 업데이트 관련 소스가 들어 있지 않습니다;;

커널소스 말고 모토로라에서 커스텀한 안드로이드 코드를 받을 수 있는 방법은 없나요 ㅠ_ㅜ??

안드로이드 같은경우 라이센스 문제로 소스코드를 무조건 공개해야 되서;; 커널같은경우는 공개하고 있는데.

커스텀한 안드로이드 소스는 찾을 수 없더라고요... 커스텀한 소스는 공개 안해도 되는건가요 ㅠ_ㅜ??

(참고) 모토로라 커널 소스 있는곳 : http://sourceforge.net/motorola/atrix/home/Home/

 

혹시 비슷한 경험 하신분 있으시다면, 해결방법좀 알려주시면 정말 도움이 많이 될것 같아요 ㅠ_ㅜ

꾀나 오래 삽질 중입니다... 한달 넘게 삽질중임...

 

현재 생각하고 있는 대책들...

아트릭스만, 주기적으로 포그라운드 애플리케이션을 체크해서 기본 홈런처 띄워졌을때까지 업데이트 미루었다가,

기본 홈런처 띄워지면 업데이트 하던지... ㅡㅡ 이러면 코드상 복잡해 지네요... 쿨럭;;

아트릭스 이넘이... 자기가 업데이트 메시지를 무시한경우 미안한지, 나중에 기본 홈런처 보여질때...

갱신하라고 위젯업데이트 메시지를 보내주기는 하는거 같은데;; 내가 원하는거는 이게 아니란 말이댜~~~

이럴려면 업데이트 메시지 올때만 업데이트 하지!! 광분!! 쿨럭;;

 

아무쪼록 ㅠ_ㅜ 비슷한 문제 격으신 분들의 답변 부탁드립니다...

ㅡ,.ㅡ 제 폰만의 문제 인건가요?? 쿨럭;; 다른 아트릭스 기종은 어떨지...

혹시 다른 핸드폰에서도 이런 문제 있는 폰들이 있나요? 그렇다면 ㅠ_ㅜ 전체적으로 소스를 다시 뜯어 고칠려고요...

그런게 아니라면 ㅠ_ㅜ 아트릭스를 지원하지 말아야 되는건가 ㅠ_ㅜ