【问题标题】:Java check every 1hourJava 每 1 小时检查一次
【发布时间】:2012-06-26 13:54:52
【问题描述】:

我构建了一个服务器,根据客户所在的单元格向他们发送问题,例如,如果他们在罗马的单元格中,服务器将向他们发送与发送给伦敦单元格中的客户的问题不同的问题,以及何时将问题发送给客户端,服务器将使其在单元格中不可用一小时,我的意思是该问题将永远不会发送给该单元格中的任何客户端一小时

我的问题是我怎样才能使 java 方法使该问题在一小时后可用?

编辑1:

我有一个哈希表,键是单元格,值是这些单元格中提出的问题

EDIT2

这是哈希表

static Hashtable<Integer, List<Integer>> unavialbeQuestions;

当我在单元格中提问时,我会这样做

unavialbeQuestions.get(cellID).add(questionID);

我想要这样的东西

function makeQuestionAvailable(int questionID, int cellID){}

【问题讨论】:

  • 您是否使用数据库来处理问题和客户?要不然是啥?请分享一些服务器详细信息。
  • @djaqeel 是的,我正在使用数据库来保存问题、单元格、客户和很多细节,但是告诉我你想要什么样的细节,我相信你不需要数据库图,

标签: android android-event


【解决方案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);
       }
    }

【讨论】:

  • 我会检查那个链接谢谢,但请你看看我的编辑
  • edit2 后:我知道如何从哈希表中删除元素,但是如何让您的函数在将问题放入哈希表 1 小时后开始?并感谢您的回答
  • 见edit2,应该和那个差不多。该代码安排一个任务在 5 秒后运行。
【解决方案2】:

一般来说,在使用 Android 时,您应该使用 AlarmManager 类而不是计时器,尤其是在后台执行此操作时,TimerTasks 很容易被操作系统杀死。

See this post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2015-11-20
    • 2012-10-03
    相关资源
    最近更新 更多