按计划更新视图

时间:2011-07-14 17:37:41

标签: android

我正在尝试更新我的观点,但我有点问题

我从互联网上获取数据,我想每分钟用新数据更新相同的视图。

最好的方法是什么。

目前我正在考虑结束时尝试这个计时器:

myTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            TimerMethod();
        }

        private void TimerMethod() {
              Csv csv= new Csv(simbol);
              csv.readCSV();
              ArrayList<Quotes> info = new ArrayList<Quotes>();
              info= csv.getListaQuotes();

              Intent i =  new Intent(getParent(), TabGrupo1.class).putExtra("opc", 2);
              i.putExtra("datos", info);
              TabGroupActivity parentActivity = (TabGroupActivity)getParent();
              parentActivity.startChildActivity("Component", i);

        }
    }, 0, 1000); 

但我得到了这个错误

07-14 13:23:00.902: ERROR/AndroidRuntime(911): FATAL EXCEPTION: Timer-0
07-14 13:23:00.902: ERROR/AndroidRuntime(911): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.finance/com.finance.TabGrupo1}: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at com.finance.TabGroupActivity.startChildActivity(TabGroupActivity.java:57)
07-14 13:23:00.902: ERROR/AndroidRuntime(911):     at com.finance.Info$1.TimerMethod(Info.java:67)

我的活动是一组活动,因为我使用Tab并在不同的标签中显示视图。 在这种情况下,我想刷新选项卡2,即正在运行的相同视图。

任何想法或建议。

由于

2 个答案:

答案 0 :(得分:2)

您需要在Android中使用AsyncTask。 在AsyncTask主要有三种方法 1.onPreexecute() 2.doInBackground() 3.onPost() 请参阅此使用此功能,您可以轻松找到解决方案

答案 1 :(得分:0)

这似乎可以通过带有警报的内容提供商,广播接收器和服务来解决。 使用Alarm Manager将服务设置为每分钟运行一次。让服务获取新数据并发送广播通知主Activity有新信息要显示。 可以找到关于广播接收器的非常好的视频教程here

此外,他的其他训练营视频将一个具有非常相似功能的程序拼凑在一起。