Android:警报未触发,无法从服务更新小部件
我已经创建了一个小部件来显示当前日期,它每5-10秒刷新一次(稍后将增加持续时间)。 在onUpdate方法中创建警报,以创建服务的意图。 创建了一个onReceive方法(扩展广播接收器)来启动服务,该服务反过来用日期更新小部件。 当我调用小部件时,onReceive最初会触发并显示日期。在那之后,警报器就不响了 1) 包括onReceive方法和调用startservice是否正确? 2) 如何知道创建警报处于活动状态且未触发? 3) 以下代码有什么问题 请帮忙 谢谢,山姆Android:警报未触发,无法从服务更新小部件,android,service,widget,alarm,Android,Service,Widget,Alarm,我已经创建了一个小部件来显示当前日期,它每5-10秒刷新一次(稍后将增加持续时间)。 在onUpdate方法中创建警报,以创建服务的意图。 创建了一个onReceive方法(扩展广播接收器)来启动服务,该服务反过来用日期更新小部件。 当我调用小部件时,onReceive最初会触发并显示日期。在那之后,警报器就不响了 1) 包括onReceive方法和调用startservice是否正确? 2) 如何知道创建警报处于活动状态且未触发? 3) 以下代码有什么问题 请帮忙 谢谢,山姆 public
public class WorldCupScores extends AppWidgetProvider {
public static String TAG = "myActivity";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "receiveeeeeeeeeeee");
Toast.makeText(context, "Receiver", Toast.LENGTH_LONG).show();
context.startService(new Intent(context, UpdateService.class));
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// To prevent any ANR timeouts, we perform the update in a service
//context.startService(new Intent(context, UpdateService.class));
AlarmManager alarmManager;
Log.d(TAG, "before intenttttt");
Intent intent = new Intent(context, UpdateService.class);
Log.d(TAG, "afterrrr intenttttt");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.add(Calendar.SECOND, 10);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5*1000, pendingIntent);
Toast.makeText(context, "My alarm started", Toast.LENGTH_LONG).show();
Log.d(TAG, "alarmmmmmmmm");
}
public static class UpdateService extends Service {
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "Inside Serviceeeeeeeeeeeeeeeeeeeee");
// Build the widget update for today
//RemoteViews updateViews = buildUpdate(this);
RemoteViews updateViews = new RemoteViews(this.getPackageName(),
R.layout.main);
Date date = new Date();
updateViews.setTextViewText(R.id.scores, "Current Time "
+ date);
// Push update for this widget to the home screen
ComponentName thisWidget = new ComponentName(this, WorldCupScores.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
manager.updateAppWidget(thisWidget, updateViews);
super.onStart(intent, startId);
}
@Override
public IBinder onBind(Intent intent) {
// We don't need to bind to this service
return null;
}
}
}
1) 包括onReceive方法和调用startservice是否正确
我不会那样做的。在当前代码中,onUpdate()
永远不会被调用,因为onReceive()
永远不会链接到超类
2) 如何知道创建警报处于活动状态且未触发
如果不点火,则不激活。而且,由于未调用onUpdate()
,因此您的报警从未被安排