2012-06-15 59 views
1

我有使用服務進行更新的小部件。它有按鈕來打開活動。它完美的作品。但是,有時我點擊小部件打開活動,它不會工作或更新。小部件沒有響應

我的問題是: 什麼殺了一個應用程序的部件。如果小部件已經死亡,爲什麼它仍然顯示在屏幕上。 有沒有反過來重溫那個特定的小部件而不創建另一個。

謝謝

+0

如果一個小部件沒有響應了。它死了嗎?有沒有辦法重溫它。 –

+0

服務仍在運行並將更新發送到小部件。但小部件不會更新。除非我刪除它,並啓用另一個小部件。 –

回答

0

我必須包括在我的服務類的代碼。它的基本功能是將更新發送到每個小部件。它已經過去了一年多了,我的小部件上的按鈕總能正常工作,並且小部件更新沒有任何問題。我發佈這個希望它會幫助有同樣問題的人。我花了一年時間才解決它。

int[] arrayOfInt = AppWidgetManager.getInstance(getBaseContext()) 
      .getAppWidgetIds(new ComponentName(this, mywidget.class)); 
    AppWidgetManager localAppWidgetManager = AppWidgetManager 
      .getInstance(this); 

    new WebView().onUpdate(getBaseContext(), localAppWidgetManager, 
      arrayOfInt); 
    int i = arrayOfInt.length; 
    for (int j = 0;; j++) { 
     if (j >= i) 
      return; 
     int k = arrayOfInt[j]; 
     RemoteViews localRemoteViews = new RemoteViews(getBaseContext() 
       .getPackageName(), R.layout.xx); 
     localRemoteViews.setTextViewText(R.id.tv, tv_text); 
     localRemoteViews.setOnClickPendingIntent(R.id.Button01, 
       PendingIntent.getActivity(getBaseContext(), 0, new Intent(
         getBaseContext(), LicenseCheck.class), 1)); 
     localAppWidgetManager.updateAppWidget(k, localRemoteViews); 
    } 
2

當面臨內存不足的情況時,Android將停止您的小部件。 然後它會在自動清理RAM後重新啓動家庭小部件。 但是這一次,您的家庭小部件將從最後一個獲得不同的pid, ,因此無法迴應廣播。

Updating app widget using AlarmManager

+0

謝謝我想知道的。非常感謝 –

+0

所以如果小部件得到不同的pid。有什麼方法可以獲得該pid,因此廣播將更新小部件。 –