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

4

2 回答 2

0

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

使用Handlers 您可以发布Runnables 以在将来的某个时间执行。

也有可能在android的警报服务上注册,但这不是你想要的,我猜。

于 2012-09-26T07:12:29.140 回答
0

在活动中,您可以使用来自 android 的 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 );
        }
    }
} 
于 2012-09-26T07:32:02.463 回答