Android: реализовать задачу таймера - PullRequest
0 голосов
/ 30 декабря 2011

Я создаю приложение, в котором я должен отправить координированный GPS через 1 час, если приложение открыто, и один раз, когда приложение открывается после выхода из системы, означает, что при запуске приложения скоординированный 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 голосов
/ 04 января 2012

Просто измените соответствующий код:

    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 manager и mloc listener - это менеджер местоположения и слушатель местоположения

...