我的活动中有一个ImageView,在激活服务时显示“活动”符号。 服务执行完毕后,ImageView应该返回“非活动”符号。
启动服务的AlarManager:
context = this;
Intent intent = new Intent(context, AlarmReceiver.class);
sender = PendingIntent.getBroadcast(context, INTENT_CODE, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calNew.getTimeInMillis(), sender);
setImage(active);
AlarmManager:
@Override
public void onReceive(Context context, Intent intent) {
Intent wakeupIntent = new Intent(context, WakeupActivity.class);
context.startService(wakeupIntent);
}
如何在服务执行后将图像更改回非活动状态?我尝试使用处理程序创建一个新的Runnable然后postDelayed(runnable,calNew.getTimeInMillis())。实际上它没有用,没有任何反应。有更好的方法吗?
答案 0 :(得分:1)
如何在服务执行后将图像更改回非活动状态?
步骤1:将Android支持包添加到您的应用程序中。
第2步:让您的活动在BroadcastReceiver
中注册LocalBroadcastManager
onResume()
,并在onPause()
中取消注册。
步骤3:让您的服务在其工作完成后通过LocalBroadcastManager
发送广播,由活动BroadcastReceiver
接听。
Here is a sample project展示了这种技术。