1

我正在尝试创建一个执行特定任务的服务,为了简单起见,我们假设一个简单的 Toast 消息,然后安排自己在未来的随机时间再次运行。

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

我采取的方法如下:

  1. 主活动设置警报以指定时间间隔运行广播
  2. 接收到广播并设置新警报以再次运行广播,然后运行所需的服务。
  3. 所需服务完成任务并自行关闭。

有人可以就这是否可行的方法提供建议吗?

我似乎无法收到广播。

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

任何建议将不胜感激。

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">
4

0 回答 0