2012-06-15 56 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,因此广播将更新小部件。 –