如何在android中的处理程序内停止Handler

时间:2018-04-25 06:04:58

标签: android

当应用程序打开时,我想发送纬度和经度,但是当应用程序打开时,需要一些时间来获取lat和long。 我正在使用处理程序在onResume方法中调用服务类,一旦我得到纬度和经度我想停止处理程序,因为我想进行API休息调用但处理程序没有停止它继续运行,即使我停止了。请释放。帮助我。

这是代码:

package com.getspot.getspot.managerpart;

import android.Manifest;
import android.app.Activity;

public class ManagerHomePage extends AppCompatActivity {
    private Handler mHandler1 = new Handler();
     private final int REFRESH_RATE1 = 10000;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Mapbox.getInstance(this
                , getString(R.string.access_token));
        setContentView(R.layout.activity_home);
        ctx=this;
            intent1 = new Intent(ctx,
                MyLocationService1.class);
        startService(intent1);

    }
     @Override
    protected void onResume() {
        super.onResume();

        mHandler1.removeCallbacks(startTimer1);
        mHandler1.postDelayed(startTimer1, 0);

    }

    private Runnable startTimer1 = new Runnable() {
        public void run() {

            ctx.startService(new Intent(ctx,MyLocationService1.class));
            gs_sharepref_latlong = ctx.getSharedPreferences("myprefer", Context.MODE_PRIVATE);

            gs_str_latitude = gs_sharepref_latlong.getString("Lat", null);
            gs_str_Longitude = gs_sharepref_latlong.getString("Long", null);
            // GS_UserUpdateLocation(ctx,gs_str_Latitude1,gs_str_Longitude1);
            gs_str_Latlong=gs_str_latitude+","+gs_str_Longitude;
            Log.i("AA","shared"+gs_sharepref_latlong.getString("Lat", null));

            if(gs_sharepref_latlong.getString("Lat", null)!=null)
            {
                mHandler1.removeCallbacks(startTimer1);

                Toast.makeText(ctx, "if--LATLONG-**-" + gs_sharepref_latlong.getString("Lat", null), Toast.LENGTH_LONG).show();
                callmethod();
                Log.i("AA","iff latitude"+gs_str_latitude);

            }
            else
            {

                Log.i("AA","elsee--lat"+gs_str_latitude);
                Toast.makeText(ctx, "else--LATLONG--"+gs_sharepref_latlong.getString("Lat", null) , Toast.LENGTH_LONG).show();

            }

            mHandler1.postDelayed(this,REFRESH_RATE1);
        }
    };


    private void callmethod() {
         if(gs_str_latitude!=null && !gs_str_latitude.equalsIgnoreCase("") && !gs_str_latitude.isEmpty())
        {


            mHandler1.removeCallbacks(startTimer1);

           // GS_User_LoggedStatus(ctx,gs_var_userid);
            Log.i("AA","calmethod--lat"+gs_str_latitude);

        }


    }

}

注意:在if语句中我试图停止处理程序,但它没有停止,即使我正在调用一个方法,在那个方法中我也停止了处理程序,但它没有请求帮助我。

0 个答案:

没有答案