2011-09-26 3 views
1
와 (위젯)

튜토리얼이나 예제 사람들 거의 모두가 그렇게해야하는 이유 :의 AppWidgetProvider 서비스 안드로이드

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
... 
    context.startService(resumeIntent); 
super.onUpdate(context, appWidgetManager, appWidgetIds); 
} 

는이 새로운 서비스는 업데이트가 실행될 때마다 시작되는 것을 의미하지 않습니다? 최상의 솔루션입니까? 아니면 방송을 보내면서하는 것이 더 낫습니까? 그리고는

context.startService(resumeIntent); 

더 onEnabled 방법으로 수행되어서는 안된다?

답변

2

아니요, 서비스가 이미 실행되고 있지 않은 경우에만 시작됩니다. 이미 실행중인 경우 onStartCommand에 새로운 의도가 전송되고 적절하게 처리 할 수 ​​있습니다.

onEnabled을 사용할지 여부는 사용하지 않을 경우 서비스가 매 시간마다 다시 시작된다는 이점이 있습니다. onEnabled이 서비스를 시작하지만 어떤 이유로 서비스가 종료 될 수 있습니다. 다시 시작하지 마세요.

+0

문제는 모든 위젯 "초기화"가 onStart 메서드에 위치한다는 것입니다. 그리고 많은 타이머와 스레드를 사용했기 때문에 모든 스레드가 매번 다시 초기화되었지만 지금 나는 onWindowProvider에서 onCreate 메서드가 가능하다는 것을 발견했다. –

관련 문제