我想在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?

统计日期范围内的天数

excel中关于星期的函数。

获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周

Android 显示日期从一个星期到另一个星期(星期四到星期四)

如何在日期选择器上禁用所有星期天?