调度随机活动或服务

时间:2013-02-11 04:06:28

标签: android-broadcast

我正在尝试创建一个执行特定任务的服务,简单地说一个简单的Toast Message,然后安排自己在将来的随机时间再次运行。

我正在使用具有时间延迟的警报管理器来运行第一个服务实例。然后,该服务为广播设置一个新警报,该警报将触发服务再次运行。

我采取的方法如下:

  1. 主要活动设置警报以指定的间隔运行广播
  2. 接收广播并设置新警报以再次运行广播,然后运行所需的服务。
  3. 必需的服务完成任务并自行关闭。
  4. 如果这是一种可行的方法,有人可以提供建议吗?

    我似乎无法收到广播。

    我已在我的清单文件中注册了接收器:

    非常感谢任何建议。

    public class MainActivity extends Activity 
    {
        protected void onCreate(Bundle savedInstanceState) 
            {
                 CustomAlarmManager am = new CustomAlarmManager(context);
                 am.setNextSchedule((long) StaticMethod.getRandomTimeDelay());
            }
    }
    public class CustomAlarmManager extends Activity 
    {
         public CustomAlarmManager(Context context) 
         {
              alarmMngr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
              intent = new Intent(context, CustomReceiver.class);
              pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
         }
         setNextSchedule(long timeDelay)
         {
              alarmMngr.set(AlarmManager.RTC_WAKEUP, timeDelay, pendingIntent);
         }
    }
    
    public class CustomReceiver extends BroadcastReceiver 
    {
         @Override
        public void onReceive(Context context, Intent intent)    
            {
                 Intent i = new Intent(context, CustomService.class);
                 CustomAlarmManager am = new CustomAlarmManager(context);
                 am.setNextSchedule((long) getRandomTimeDelay());   
                 context.startService(i);
            }
    }
    
    public class CustomService extends Service 
    {
         @Override
        public int onStartCommand(final Intent intent, int flags, int startId) 
            {
                 displayToastMessage();
                 stopService(intent);
            }
    }
    Manifest File:
    <receiver android:name="packageName.CustomReceiver" android:enabled="true">
    

0 个答案:

没有答案