我想在android中的不同日期(星期一,星期二等)的特定时间安排任务
Posted
技术标签:
【中文标题】我想在android中的不同日期(星期一,星期二等)的特定时间安排任务【英文标题】:I want to schedule task at particular time for different day(Monday, Tuesday, etc) in android 【发布时间】:2012-06-24 11:24:03 【问题描述】:目前我正在开发 android 中的 BroadcastReceiver、Service 和 AlarmManager,以开发我项目中的一项功能。我需要在特定日期的特定时间安排一些任务。
例如:-
星期一 - 上午 09:00 和下午 05:00
星期二 - 上午 9:00 和下午 05:00
星期三 - 上午 9:00 和下午 05:00
星期四 - 上午 9:00 和下午 05:00
星期五 - 上午 9:00 和下午 05:00
星期六 - 上午 10:00 和晚上 10:00
周日 - 上午 10:00 和晚上 10:00
到目前为止我所做的是创建一个活动和广播接收器。点击按钮后,每 60 秒广播接收器将被调用。这是我的代码 sn-p。但是我想根据我上面描述的那一周来安排我的任务。任何人都可以帮助我如何安排上述任务。
代码:-
public class AlarmDemoActivity extends Activity
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button buttonStart = (Button)findViewById(R.id.start);
buttonStart.setOnClickListener(new Button.OnClickListener()
public void onClick(View arg0)
// TODO Auto-generated method stub
Intent myIntent = new Intent(getBaseContext(),
MyScheduledReceiver.class);
PendingIntent pendingIntent
= PendingIntent.getBroadcast(getBaseContext(),
0, myIntent, 0);
AlarmManager alarmManager
= (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
long interval = 60 * 1000; //
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), interval, pendingIntent);
finish();
);
广播接收器:-
public class MyScheduledReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
// TODO Auto-generated method stub
/*Intent scheduledIntent = new Intent(context, MyScheduledActivity.class);
scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scheduledIntent);*/
System.out.println("Make Phone Silent");
欢迎所有建议和提示。
【问题讨论】:
【参考方案1】:我会在一个非常高的层次上给出这个想法。你必须弄清楚你自己的编码:
1.将用户偏好保存在共享偏好中(我想你已经在这样做了)
2.使用报警管理器的set方法调度第一个报警 Refer this for details on this method.
3.当闹钟响起时,再次使用共享首选项中的下一个时间段安排下一个闹钟,再次使用 set 方法
【讨论】:
是的。它应该可以工作。如果可以,请将其标记为答案。谢谢。【参考方案2】:您不需要每 60 秒调用一次,您可以使用日历实例设置触发警报的时间并设置正确的日期,因此警报管理器将在指定日期触发广播意图并次。
请注意,如果手机关闭,警报管理器将被重置,因此您必须将警报存储在任何持久性存储中并为 BOOT_COMPLETED 操作注册广播接收器以恢复警报。
您可以小间隔进行测试,这样您就不必等待一整天 :)
【讨论】:
我没有使用 60 秒。我添加了 sn-p 我现在已经做了很多事情。但我想在特定时间每天两次安排整个一周的任务。 你能告诉我如何为不同的日期和时间安排多个任务。我完成了一个,但没有完成多个。如果你知道请帮助我, 我认为您必须为要安排的每个警报创建不同的 PendingIntent 并使用 alarmManager.set(...) 设置每个警报以上是关于我想在android中的不同日期(星期一,星期二等)的特定时间安排任务的主要内容,如果未能解决你的问题,请参考以下文章
你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?
获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周