如何以串行时间方式执行三个不同的任务?
Posted
技术标签:
【中文标题】如何以串行时间方式执行三个不同的任务?【英文标题】:how to execute three different task with serial time manner? 【发布时间】:2017-09-22 07:22:07 【问题描述】:我需要执行三个不同的任务,每个任务的执行时间应该是 1000 毫秒、2000 毫秒、3000 毫秒。
你能告诉我更好的实现方式吗? 1.处理程序 2.定时任务 3. 线程 4.ExecutorServices等
【问题讨论】:
【参考方案1】:我正在使用处理程序
处理程序处理程序 = 新处理程序(); handler.postDelayed(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
, 1000);
handler.postDelayed(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
, 2000);
handler.postDelayed(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
, 3000);
【讨论】:
【参考方案2】:您可以使用AlarmManager来执行操作:
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
alarmIntent.putExtra("Activity",1);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntent);
alarmIntent = new Intent(this, AlarmReceiver.class);
alarmIntent.putExtra("Activity",2);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2000, pendingIntent);
alarmIntent = new Intent(this, AlarmReceiver.class);
alarmIntent.putExtra("Activity",3);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 3000, pendingIntent);
AlarmReceiver 类
public class AlarmReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
int extra = intent.getExtra("Activity");
switch(extra)
case 1:
//start 1st activity
case 2:
//start 2nd activity
case 3:
//start 3rd activity
【讨论】:
它不会影响应用程序的性能,但如果屏幕进入睡眠状态,它会唤醒屏幕。因此,如果您没有这样的要求,那么您可以使用正常的待处理意图以上是关于如何以串行时间方式执行三个不同的任务?的主要内容,如果未能解决你的问题,请参考以下文章