-1

I want to set a time check of 30 Seconds. Basically what i want is i will call a webservice for login and after clicking the login button i want to check if i am not getting a status OK within 30 seconds i want so show a alert tha please try again. How to set this ?

Login button:

        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();
}

Here i want to check the difference Here:

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

ステータスチェックを担当する新しいスレッドを開始することをお勧めします。その新しいスレッドでは、sleep メソッドを使用するだけで、30 秒のスリープ後に、ユーザーにステータスが表示されます。Java API のスレッドに関する詳細情報を確認してください。

于 2012-08-10T11:49:51.577 に答える
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 に答える