调用locationmanager.removeupdates会在android中永久删除吗?

时间:2015-08-11 05:33:08

标签: java android arraylist location locationmanager

如果移动设备以一分钟的间隔移动,我创建了一个通过短信发送经度和经度的应用。 在ArrayList到达发送SMS的六个元素之后,我使用ArrayList来保存六个LatLngs。如果设备在六分钟内停止移动,则ArrayList将小于六。如果设备不移动20分钟,则它发送未填充的ArrayList。我使用CountdownTimer来实现这一目标。 只要我移动,它就可以发送LatLngs。但是,如果我在ArrayList填充之前停止,它会在20分钟后发送ArrayList。没问题。但是,之后它会在一分钟内发送短信。我的代码是

private void sendLog() {

    Toast.makeText(MainPage.this,"Sending Log",Toast.LENGTH_LONG).show();
    final SharedPreferences account=getSharedPreferences("admins", MODE_PRIVATE);
    String interval=account.getString("lti", "");
    int timeInterval=Integer.parseInt(interval);

    final LocationManager logManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
    logManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeInterval * 60000, 100, new LocationListener() {
        @Override
        public void onLocationChanged(final Location location) {
            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            DecimalFormat dFormat = new DecimalFormat("#.####");
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("kk:mm");
            SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM,yy");
            String time = sdf.format(date);
            final String dateLog = sdf1.format(date);

            loglist.add("!+" + dFormat.format(latitude) + ",+" + dFormat.format(longitude) + "," + time);
            Toast.makeText(MainPage.this, loglist.toString(), Toast.LENGTH_SHORT).show();

            CountDownTimer countDownTimer = new CountDownTimer(1200000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    if (loglist.size() == 6) {
                        for (int j = 0; j < loglist.size(); j++) {
                            log.append(loglist.get(j).toString());
                        }
                        Toast.makeText(MainPage.this, log.toString(), Toast.LENGTH_SHORT).show();
                        SmsManager smsManager = SmsManager.getDefault();
                        smsManager.sendTextMessage(logPreferences.getString("admin1", ""), null, "  " + log.toString() + "!" + dateLog + "!", null, null);
                        loglist.removeAll(loglist);
                        log.setLength(0);
                    }
                }

                @Override
                public void onFinish() {
                    if (loglist.size()<6) {
                        for (int j = 0; j < loglist.size(); j++) {
                            log.append(loglist.get(j).toString());
                        }
                        SmsManager smsManager = SmsManager.getDefault();
                        smsManager.sendTextMessage(logPreferences.getString("admin1", ""), null, "  " + log.toString() + "!" + dateLog + "!", null, null);
                        loglist.removeAll(loglist);
                        log.setLength(0);
                    }
                }
            }.start();
        }

我想调用logManaager.removeupdates()。这是否导致无法再次调用locationUpdates。因为我希望设备在移动时发送。帮助我。

1 个答案:

答案 0 :(得分:0)

您对调用FOLLOWER_ID的直觉是正确的。

调用logManager.removeUpdates()后,您可以再次请求更新。