我构建了一个服务器,根据客户端所在的单元格向客户端发送问题,例如,如果他们在罗马的单元格中,服务器会向他们发送不同于问题的问题,这些问题将发送到伦敦的单元格中的客户端,以及何时一个问题被发送到客户端,服务器将使其对单元格不可用一小时,我的意思是该问题永远不会被发送到该单元格中的任何客户端一小时
我的问题是我如何制作java方法让这个问题在一小时后可用?
我有一个哈希表,键是单元格,值是这些单元格中提出的问题
这是哈希表
static Hashtable<Integer, List<Integer>> unavialbeQuestions;
当我在一个单元格中询问问题时,我做了这个
unavialbeQuestions.get(cellID).add(questionID);
我想要这样的东西
function makeQuestionAvailable(int questionID, int cellID){}
答案 0 :(得分:1)
在java中,您可以使用Timer
类计划在经过所需时间后运行的方法。有关详细信息,请查看此示例:
http://www.ibm.com/developerworks/java/library/j-schedule/index.html
<强> EDIT1:强>
一小时后调用此功能:
function makeQuestionAvailable(int questionID, int cellID){
unavialbeQuestions.get(cellID).remove(questionID);
}
<强> EDIT2:强> 安排的示例代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.schedule(new ScheduledTaskWithHandeler(), 5000);
}
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), "Run!",
Toast.LENGTH_SHORT).show();
}
};
class ScheduledTaskWithHandeler extends TimerTask {
@Override
public void run() {
handler.sendEmptyMessage(0);
}
}
答案 1 :(得分:0)
一般来说使用Android时你应该使用AlarmManager类而不是计时器,特别是如果你在后台执行此操作,TimerTasks很容易被操作系统杀死。