android:实现计时器任务

时间:2011-12-30 06:49:21

标签: android timertask

我正在制作一个应用程序,我必须在1小时后发送gps协调,如果应用程序处于打开状态,并且一次应用程序打开后退出意味着应用程序启动时gps协调将发送到服务器,如果应用程序保持打开1小时,gps坐标将被发送,如果应用程序在1小时前关闭,应用程序将不会发送gps坐标。我的代码如下:

TimerTask timer_task = new TimerTask() {

            public void run()
            {
                        Log.v(".............................................", "Timer Task Started");
                        System.out.println("@@@@@@@@@@ timer task started  IN TRACKER11111");
                        try
                        {
                            // if (locn != null)
                            {

                                Calendar cal = Calendar.getInstance();
                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
                                String time = sdf.format(cal.getTime());
                                String xml = xml parameters being send to server
                                System.out.println(xml);
                                System.out.println("hello");

                                System.out.println("Xml is : "+xml);

                            //  FileSave obj9=new FileSave();
                            //  obj9.Save(xml);


                                int len = xml.length();

                                byte[] data = xml.getBytes();
                                System.out.println("Length =****************************  " + len);

                                System.out.println("Stream Closed");

                                conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                                if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected())
                                {
                                    //if (gps.equals("yes"))
                                    {
                                        new Connection(data);
                                    }
                                }
                                else
                                {
                                }

                            }
                            }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }

            }
        };
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(timer_task, 4000, 3600000);   






         }
        catch (Exception e1) {
            e1.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

只需相应更改给定的代码:

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(timer_task, 0, 3600000);   

并在位置管理器中设置时间和最小距离,如下所示:

mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,3600000, 40,  mlocListener);

其中3600000是时间段,40是距离,以米为单位,mloc管理器和mloc侦听器是位置管理器和位置监听器