-1

我想设置 30 秒的时间检查。基本上我想要的是我会调用一个网络服务进行登录,点击登录按钮后,我想检查我是否在 30 秒内没有得到状态 OK,所以显示一个警报,请再试一次。这个怎么设置?

登录按钮:

        logbtn.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v) 
            {
                start = System.currentTimeMillis();
                SharedPreferences myPrefs = Login.this.getSharedPreferences("myPrefs",MODE_WORLD_READABLE);
                SharedPreferences.Editor prefsEditor = myPrefs.edit();
                prefsEditor.putLong("starttime", start);
                prefsEditor.commit();
}

在这里我想检查一下这里的区别:

SharedPreferences myPrefs = Login.this.getSharedPreferences("myPrefs",MODE_WORLD_READABLE);
            time = myPrefs.getLong("starttime", System.currentTimeMillis());
if("ok".equalsIgnoreCase(status) && (System.currentTimeMillis() - time) > 3000)
{
    \\Code
}
else
{  
    Alert
}
4

2 回答 2

0

您可以使用以下代码片段

long startTime = 0;

logbtn.setOnClickListener(new OnClickListener() 
{
    public void onClick(View v) 
    {
        startTime = System.currentTimeMillis();
        SharedPreferences myPrefs = Login.this.getSharedPreferences("myPrefs",MODE_WORLD_READABLE);
        SharedPreferences.Editor prefsEditor = myPrefs.edit();
        prefsEditor.putLong("starttime", start);
        prefsEditor.commit();
        startLoginThread();
 }


private void startLoginThread()
{
    new Thread(new Runnable() {

        public void run() 
        {
            try 
            {
                Thread.sleep(1000); 
                if((System.currentTimeMillis() - startTime) > 30 * 1000)
                {
                    //show your allert
                }

            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    }).start();
}
于 2012-08-10T12:04:55.707 回答
0

我建议你启动一个新线程,负责状态检查。在您的新线程中,您可以简单地使用睡眠方法,并且在睡眠 30 秒后 - 您将向用户显示状态。查看有关 Java API 中线程的更多信息。

于 2012-08-10T11:49:51.577 回答