2012-09-26 90 views
0

喜我在Android的新的。我創建了一個應用程序,並使用偏好設置。我已經使用列表首選項設置爲1,10,60分鐘。現在我想應用一個函數,以便在每個時間間隔內刷新另一個活動。如何設置刷新間隔應用

beerPref2 
       .setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 

        public boolean onPreferenceChange(Preference preference, 
          Object newValue) { 
         // TODO Auto-generated method stub 

         final ListPreference listrefresh = (ListPreference) preference; 
         final int idx = listrefresh 
           .findIndexOfValue((String) newValue); 

         if (idx == 0) { 

         } else if (idx == 1) { 
          // System.out.println("2"); 

         } else if (idx == 2) { 
          System.out.println("3"); 
         } else { 
          System.out.println("4"); 
         } 

         return true; 
        } 

這是用於首選項屏幕的代碼。現在我有另一個名爲DetailPage的類。這個班我們不得不重新加載。你能完成這個代碼嗎?我嘗試了很多,但無法做到。我是Android新手,想要實現這一點。請幫助我並完成此代碼。我如何在特定的時間間隔內加載其他課程?我的意思是說,如果我們選擇1分鐘,那麼活動應該每1分鐘重新加載一次。如果我們選擇10分鐘,然後應用程序應該重新加載每次10分鐘,...幫助我實現這個

+0

這DetailPage是這樣的一個活動,什麼是重裝你執行的一個函數? –

+0

是其已經執行 – user1693501

+0

我想申請線程如何將應用線程每個時間間隔 – user1693501

回答

0

也許這將幫助你:Handler.postDelayed

隨着Handler是你可以張貼Runnable s到在一段時間內被執行在將來。

還有一個在Android的報警服務中註冊的可能性,但是這不是你想要的,我猜。

+0

actully我們想,如果我們選擇1分鐘,然後活動應該在各1分鐘刷新,或者如果我們選擇10分鐘,然後活動應該在每10刷新分鐘。 – user1693501

+0

你可以用Handler來做到這一點。或者甚至更好的一個HandlerThread,如果它不應該在主線程上完成的話。使用Handler,你可以編寫一個Runnable來完成你的更新,並將它的一個實例發佈到Handler.postDelayed(runnableInstance,interval)。然後它將在_interval_ millies中執行。在可運行的帖子裏面,它最後會有循環行爲。 – Fildor

+0

可以ü請記下代碼1分鐘只能請 – user1693501

0

在活動中您可以使用ScheduledFuture類從機器人在與scheduleAtFixedRate功能固定的時間間隔來執行的可運行看http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html 以獲取更多信息

public class DetailPage extends Activity { 
    private final ScheduledExecutorService checkCurrentTime=Executors.newScheduledThreadPool(1); 
    private ScheduledFuture scheduledTimeChecker ; 

    private final Runnable timeChecker = new Runnable() {  
     @Override 
     public void run() {    
      doInBackground(str); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     startTimeSchecker(); 
    } 

    protected Void doInBackground(String Url) { 
     detailed_news = dh.get_detail_news(id[i],catagoryid); 
     allData.add(detailed_news); 
    } 

    private void startTimeSchecker(){   
     if(scheduledTimeChecker==null ||scheduledTimeChecker.isCancelled()){   
      scheduledTimeChecker =checkCurrentTime.scheduleAtFixedRate(timeChecker, 10, 60,java.util.concurrent.TimeUnit.SECONDS); 
     } 
    } 
} 
+0

您可以編寫代碼1分鐘只能請 – user1693501

+0

u能請告訴你們的電子郵件ID,這樣我可以張貼ü代碼,因爲它不工作 – user1693501

+0

請在給定的代碼添加代碼,這樣我就可以實現很容易僅僅只增加1分鐘 – user1693501