先说下需求吧, 这个是服务器端设定几个时间段,比如说 周一,周三 的下午15点。 然后让用户来勾选。如果用户选择了这个时间段,那么每个周一,周三的下午15点都给用户一个提醒。
目前我是这样解决的
1:新建一个Alarms的类 主要功能是来设置提醒的时间,内容如下:
public class Alarms {
//xml 里面的设置
private static final String BC_ACTION = "com.example.myalarmtest.action.BC_ACTION";
public static void startAlarm(Context context,long time){
final AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(BC_ACTION);
intent.putExtra("msg", "next alarm");
final PendingIntent pi = PendingIntent.getBroadcast(context,0,intent,0);
am.set(AlarmManager.RTC, time, pi);
}
}
2:主activity里面调用这方法 5秒之后提醒
private void startAlarm(){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 5);
long time = calendar.getTimeInMillis();
Alarms.startAlarm(MainActivity.this,time);
}
3:新建一个MyReceiver的类,继承 BroadcastReceiver 主要作用是 servers 用来通知或者提醒。
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg = intent.getStringExtra("msg");
Toast.makeText(context, msg+"sssss", Toast.LENGTH_LONG).show();
//计算出来下一次的时间 time
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 5);
long time = calendar.getTimeInMillis();
Alarms.startAlarm(context,time);
}
}
4:这是xml注册内容
<receiver
android:name="MyReceiver">
<intent-filter>
<action android:name="com.example.myalarmtest.action.BC_ACTION"/>
</intent-filter>
</receiver>
具体的时间计算方法 没写出来。大家可以自己来计算