Android 在恢复活动时重新执行处理程序消息

Android 在恢复活动时重新执行处理程序消息,android,gps,handler,message,Android,Gps,Handler,Message,我的程序尝试在用户定义的时间间隔内每次获取GPS位置 @Override protected void onStart() { super.onStart(); mHandler.sendEmptyMessage(Call_GPS); } 为此,我创建了消息处理程序,并使用sendEmptyDelayedMessage,延迟量由用户输入。在消息中,我调用getLocation()方法,该方法开始获取GPS坐标并保存它们 @SuppressLint("HandlerLeak")

我的程序尝试在用户定义的时间间隔内每次获取GPS位置

@Override
protected void onStart() {
    super.onStart();
    mHandler.sendEmptyMessage(Call_GPS); }
为此,我创建了消息处理程序,并使用sendEmptyDelayedMessage,延迟量由用户输入。在消息中,我调用getLocation()方法,该方法开始获取GPS坐标并保存它们

@SuppressLint("HandlerLeak")
Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case Call_GPS:
            getLocation();
            mHandler.sendEmptyMessageDelayed(Call_GPS,Integer.parseInt(Settings.GPSInt)*60000);
        super.handleMessage(msg);
            break;}}};
这段代码也适用于onPause(),并根据用户请求获取间隔内的gps坐标

我的问题是,如果我从onPause()返回UI(onResume()),程序将开始重新获取GPS坐标,请帮助我

提示:我在互联网上搜索过这个,我读到处理程序运行在UI线程上,我认为这就是我问题的原因,但我不知道解决方案


注意:请避免在getLocation()中提出更改updaterequest的解决方案,我需要关于处理程序的解决方案。您想要什么行为还不太清楚,但是,如果您希望请求在onPause中停止,并且在用户返回应用程序时不再启动,则需要从onPause()中的处理程序中删除挂起的消息。否则,当应用程序返回onResume时,它们仍将在队列中,并将继续启动。

我找到了解决方案
这是通过从onCreate()而不是onStart()调用处理程序来实现的。

您在哪个方法中编写了此
处理程序
代码??处理程序代码是以相同的类编写的,这意味着处理程序接收sendEmptyMessageDelayed()。在正常情况下,必须在定义的延迟后重新开始获取新位置。但是,当我从onPause()返回onResume()时,处理程序开始执行消息并获取GPS坐标,这意味着它不会继续延迟完成以开始获取新位置。请告诉我现在的问题是否清楚