当alarmManager唤醒时更改ImageView资源

时间:2012-06-16 22:09:06

标签: android service timer handler android-view

我的活动中有一个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())。实际上它没有用,没有任何反应。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

  

如何在服务执行后将图像更改回非活动状态?

步骤1:将Android支持包添加到您的应用程序中。

第2步:让您的活动在BroadcastReceiver中注册LocalBroadcastManager onResume(),并在onPause()中取消注册。

步骤3:让您的服务在其工作完成后通过LocalBroadcastManager发送广播,由活动BroadcastReceiver接听。

Here is a sample project展示了这种技术。