如何在应用程序中设置刷新间隔

时间:2012-09-26 06:58:04

标签: java android

嗨我是android的新手。我创建了一个应用程序,并使用首选项进行设置。我使用列表首选项设置为1,10,6分钟。现在我想应用一个函数,以便在每个时间间隔刷新另一个活动。

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分钟重新加载一次......帮助我实现这个

2 个答案:

答案 0 :(得分:0)

也许这会对您有所帮助:Handler.postDelayed

使用Handler,您可以在将来的某个时间发布Runnable个。

还有可能在Android的闹钟服务注册,但我想这不是你想要的。

答案 1 :(得分:0)

在一个活动中,你可以使用android中的ScheduledFuture类以固定的间隔执行runnable并使用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 );
        }
    }
}