【发布时间】:2017-09-22 07:22:07
【问题描述】:
我需要执行三个不同的任务,每个任务的执行时间应该是 1000 毫秒、2000 毫秒、3000 毫秒。
你能告诉我更好的实现方式吗? 1.处理程序 2.定时任务 3. 线程 4.ExecutorServices等
【问题讨论】:
标签: java android multithreading threadpool
我需要执行三个不同的任务,每个任务的执行时间应该是 1000 毫秒、2000 毫秒、3000 毫秒。
你能告诉我更好的实现方式吗? 1.处理程序 2.定时任务 3. 线程 4.ExecutorServices等
【问题讨论】:
标签: java android multithreading threadpool
我正在使用处理程序
处理程序处理程序 = 新处理程序(); 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);
}
【讨论】:
您可以使用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
}
}
}
【讨论】: