1
我有一個簡單的文本視圖,我試圖用AlarmManager更新每一秒。 Log.d(「test」,「hello1」)在運行應用程序時出現在我的LogCat中,但Log.d(「test」,「service」)沒有顯示出來,所以它看起來程序不是甚至到達我的MyService類。AlarmManager爲什麼不更新我的小部件?
我將不勝感激任何幫助。
謝謝。
這裏是我的AppWidgetProvider類:
public class NetworkSpeedWidget extends AppWidgetProvider {
private PendingIntent service = null;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Log.d("test", "hello");
super.onUpdate(context, appWidgetManager, appWidgetIds);
final AlarmManager m = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Intent i = new Intent(context, MyService.class);
if (service == null)
{
service = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
Log.d("test", "hello1");
m.setRepeating(AlarmManager.RTC, System.currentTimeMillis(),1000,service);
}
}
這裏是我的MyService類:
public class MyService extends Service{
@Override
public void onCreate()
{
Log.d("test", "service");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
buildUpdate();
return super.onStartCommand(intent, flags, startId);
}
private void buildUpdate()
{
MainActivity object = new MainActivity();
String objectString = object.getMegaBitsPerSecondString();
AppWidgetManager manager = AppWidgetManager.getInstance(this);
ComponentName thisWidget = new ComponentName(this, NetworkSpeedWidget.class);
int[]ids = manager.getAppWidgetIds(thisWidget);
final int N = ids.length;
for (int i = 0; i < N; i++){
int awID = ids[i];
RemoteViews v = new RemoteViews(getPackageName(), R.layout.widget);
v.setTextViewText(R.id.widgetTextView,objectString);
manager.updateAppWidget(awID, v);
}
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
您應該發送PendingIntent:http://developer.android.com/reference/android/app/PendingIntent.html#send(int)。你有沒有在你的清單中宣佈這項服務? – jul
就是這樣!我沒有在我的Manifest中聲明這項服務。非常感謝。我不認爲PendingIntent會起作用,因爲我沒有處理任何處理程序。我很驚訝,Eclipse沒有給我一個警告或一個錯誤,我的服務沒有宣佈。 – Richard