2012-11-06 4 views
0

위젯을 클릭하려고하면 위젯이 클릭 할 때 업데이트됩니다. 공동, 나는 매력처럼 작동 - 다음 코드를 만들었지 만 약 20 분 동안 만 작동을 멈췄다. (더 이상 클릭시 업데이트되지 않지만 XML의 지정된 기간 이후에 자체 위젯이 업데이트 됨) 다시 작업하기 시작 함 다른 위젯 인스턴스를 추가하면 모든 의도가 다시 등록됩니다.~ 20 분 후에 PendingIntent가 손실됩니다.

다른 누구에게도 문제가 발생 했습니까? 내 코드에 문제가있는 것을 볼 수 있습니까? 내 위젯 제공자에

는 :

내 서비스가 선언되는 방법
 @Override 
     public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
       int[] appWidgetIds) { 
      super.onUpdate(context, appWidgetManager, appWidgetIds); 

      final int N = appWidgetIds.length; 
      Log.d(tag, "onUpdate"); 

      for (int i=0; i<N; i++) { 
       int appWidgetId = appWidgetIds[i]; 

       RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_exchange_rate_small); 

       Intent intent = new Intent(context, ExchangeRateWidgetService.class); 
       intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
       PendingIntent pendingIntent = PendingIntent.getService(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

       // Register onClick action for pendingIntent 
       views.setOnClickPendingIntent(R.id.wdExchangeRate, pendingIntent); 

       appWidgetManager.updateAppWidget(appWidgetId, views); 


       try { 
        // Perform first update 
        pendingIntent.send(); 
       } catch (CanceledException e) { 
        Log.e(tag, "First update has been canceled, this should not normally happend!"); 
        e.printStackTrace(); 
       } 
      } 

:

public class ExchangeRateWidgetService extends IntentService { 

    protected void onHandleIntent(Intent intent) { 

    // Doing something ... 

    } 
    } 
+0

무엇을 pendingIntent.send() 호출에 사용합니까? – Egor

+0

글쎄, 업데이트 자체를 수행하고 데이터를 검색하고 위젯을 업데이트하는 서비스를 호출합니다. – Ency

답변

0

가 내가 그것을 해결 생각, 문제는, IntentService에서 원격 뷰를 통해 위젯 업데이트 된 서비스 였지만 않습니다 등록되지 않았습니다 setOnClickPendingIntent.

관련 문제