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

时间:2013-11-29 23:29:03

标签: android gps handler message

我的程序尝试每次在用户定义的间隔内获取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的解决方案,我需要有关处理程序的解决方案

2 个答案:

答案 0 :(得分:0)

您不希望自己想要什么样的行为,但是如果您希望请求停止在onPause中而不是在用户返回应用程序时再次启动,那么您需要在onPause()中从处理程序中删除待处理的消息。否则,当应用程序返回onResume时,它们仍会在队列中,并将继续触发。

答案 1 :(得分:0)

我找到了解决方案 它是通过从onCreate()而不是onStart()

调用处理程序