我需要执行三个不同的任务,每个任务应该像1000ms,2000ms,3000ms一样执行。如何用串行时间方式执行三个不同的任务?
你能告诉我实现更好的方式,这是最好下列 1.处理器 2. TimerTask的 3.线程 4. ExecutorServices的等
我需要执行三个不同的任务,每个任务应该像1000ms,2000ms,3000ms一样执行。如何用串行时间方式执行三个不同的任务?
你能告诉我实现更好的方式,这是最好下列 1.处理器 2. TimerTask的 3.线程 4. ExecutorServices的等
您可以使用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
}
}
}
我正在使用处理程序
Handler handler = new Handler(); handler.postDelayed(新的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);
}
是影响性能? – user3231661
它不会影响应用程序的性能,但如果屏幕进入睡眠状态,它会唤醒屏幕。所以,如果你没有这样的要求,那么你可以使用正常的等待意图 – Sonam