2013-07-25 48 views
2

有一些問題! 我想在一秒之後做一些動作,比如改變5秒後的單詞。除了設置定時器之外,我還設置了一切。關於定時器和動作...幫助!! ----(Android應用程序)

我認爲這對大家來說很簡單,但我只是拿起機器人3天。 我該怎麼辦?

+0

http://stackoverflow.com/questions/17839419/android-thread-for-a-timer/17839725#17839725。檢查這可能會幫助如果您使用計時器使用'runOnUiThread'來更新textview。你也可以使用一個處理程序。 – Raghunandan

回答

1

使用AlarmManager進行重複操作。

例子:

PendingIntent pintent = PendingIntent.getService(context, 0, new Intent(context, YourIntentHere.class), 0); 
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarm.cancel(pintent); 
alarm.setRepeating(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis(), iInterval, pintent); 

所以只是封裝你想要的東西至極重複你的邏輯是能夠爲意向(活動或服務)。

另外,你可以使用睡眠AsyncTask,但我不會推薦這樣的。

參見:

http://developer.android.com/reference/android/app/AlarmManager.html http://www.techrepublic.com/blog/android-app-builder/use-androids-alarmmanager-to-schedule-an-event/

+0

我不打算重複一些東西。我只是想做一個動作,就像5秒後改變單詞的顏色一樣。只是做一次而已...... – noahh

+0

我做了另一篇文章,這解決了你的問題! ;) – Thkru

+0

其實,我不知道用這個網站,可以給我鏈接嗎? – noahh

0

的行動是僅做一次:

:開始Thread使用Thread.Sleep(5000)然後確保你是在用戶界面 - 再次使用myActivity.runOnUiThread(Runnable)線程並再次更改文本

更好一個:使用asynctask! - >

 new AsyncTask<String, Void, Void>() 
     { 
      protected void onPreExecute() 
      { 
       // ui thread 
      }; 

      @Override 
      protected Void doInBackground(String... params) 
      { 
       // non ui thread 
       // do your first action here 
       try 
       { 
        Thread.sleep(5000); 
       } 
       catch (InterruptedException e) 
       { 
       } 
       return null; 
      } 

      protected void onPostExecute(Void result) 
      { 
       // ui thread 
       // do your seconds action here 
      }; 
     }.execute(""); 
+0

)對不起,我不明白,你可以更簡單地解釋一下嗎? – noahh

+0

你可以在你的應用程序中複製和粘貼這段代碼 然後你可以在「onBackground」方法中做邏輯/操作 稍後,您可以再次在「onPostExecute」中顯示對話框 – Thkru

+0

我做到了.thankyou !!!!!!! – noahh