Locationmanager.removeUpdates在按钮的OnClickListener上不起作用

问题描述

我正在使用地图片显示位置跟踪。在该活动中,我按下一个按钮。我希望当用户单击按钮const Libp2p = require('libp2p') const MulticastDNS = require('libp2p-mdns') const KadDHT = require('libp2p-kad-dht') const Bootstrap = require('libp2p-bootstrap') const TCP = require('libp2p-tcp') const Mplex = require('libp2p-mplex') const { NOISE } = require('libp2p-noise') const GossipSub = require('libp2p-gossipsub') const { FaultTolerance } = require('libp2p/src/transport-manager') const CID = require('cids') const all = require('it-all') const delay = require('delay') const bootstrapers = [ '/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGheyERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ','/ip4/104.236.176.52/tcp/4001/p2p/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z','/ip4/104.236.179.241/tcp/4001/p2p/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM','/ip4/162.243.248.213/tcp/4001/p2p/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm','/ip4/128.199.219.111/tcp/4001/p2p/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu','/ip4/104.236.76.40/tcp/4001/p2p/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64','/ip4/178.62.158.247/tcp/4001/p2p/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd','/ip4/178.62.61.185/tcp/4001/p2p/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3','/ip4/104.236.151.122/tcp/4001/p2p/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx' ] const createNode = () => { return Libp2p.create({ addresses: { listen: ['/ip4/0.0.0.0/tcp/0'] },modules: { transport: [ TCP ],streammuxer: [ Mplex ],connEncryption: [ NOISE ],// peerdiscovery: [ MulticastDNS ],peerdiscovery: [ Bootstrap,MulticastDNS ],dht: KadDHT,pubsub: GossipSub },transportManager: { faultTolerance: FaultTolerance.NO_FATAL },config: { peerdiscovery: { autoDial: true,[MulticastDNS.tag]: { broadcast: true,interval: 1000,enabled: true },[Bootstrap.tag]: { interval: 1000,enabled: true,list: bootstrapers },[GossipSub.tag]: { enabled: true,emitSelf: true,signMessages: true,strictSigning: true },mdns: { broadcast: true,bootstrap: { interval: 1000,pubsub: { enabled: true,},dht: { enabled: true } } }) } ( async () => { const [node1,node2] = await Promise.all([ createNode(),createNode() ]) node1.on('peer:discovery',(peer) => console.log('discovered:',peer.id.toB58String())) node2.on('peer:discovery',peer.id.toB58String())) await Promise.all([ node1.start(),node2.start() ]) // const cid = new CID('QmTp9VkYvnHyrqKQuFPiuZkiX9gPcqj6x5LJ1rmWuSySnL') // await node1.contentRouting.provide(cid) // await delay(3000) // console.log("looking for providers...") // const providers = await all(node2.contentRouting.findProviders(cid,{ timeout: 5000 })) // console.log('Found provider:',providers[0].id.toB58String()) })() 时停止并打开新活动。我尝试 onLocationchanged()停止 removeUpdates(locationListener)。但是似乎不起作用,因为当我单击该按钮时,整个应用程序都被弯腰并关闭了。

这是我的MapsActivity.java文件

 onLocationchanged()

这是我的activity_map.xml文件

import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.FragmentActivity;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener {

    private GoogleMap mMap;

    private DatabaseReference reference;
    private LocationManager manager;

    private LocationListener locationListener;

    Marker MyMarker;

    Button stop;

    private final int MIN_TIME = 1000; // 1 sec
    private final int MIN_disTANCE = 1; // 1 meter
    private int coOrdinate = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        manager = (LocationManager) getSystemService(LOCATION_SERVICE);

        reference = FirebaseDatabase.getInstance().getReference().child("User-101");
        //FirebaseDatabase.getInstance().getReference().setValue("This is tracker app");

        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        getLocationUpdates();

        readChanges();

        stop = findViewById(R.id.stop);

        stop.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                manager.removeUpdates(locationListener);
                Intent intent = new Intent(getApplicationContext(),ShowMap.class);
                startActivity(intent);
            }
        });

    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)