如何从timers run方法调用另一个方法。安卓

时间:2015-11-14 17:43:08

标签: java android timer

这是我的代码:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_getgps);
    Intent cas = getIntent();
    String setcas = cas.getStringExtra(Login.EXTRA_CAS);
    //Toast.makeText(getApplicationContext(), setcas, Toast.LENGTH_SHORT).show(); -na overenie ci sa premenna preniesla z predchadzajucej aktvity
    Timer timer = new Timer( );
        //timer.scheduleAtFixedRate(void getit, long 5000, long 5000);
    timer.schedule(new TimerTask() {
        @Override
        public void run() {


        }
    }, Long.parseLong(setcas));}

        public void getit(Bundle savedInstanceState){
            LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            LocationListener mlocListener = new MyLocationListener();
            mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, mlocListener);

我想从run中调用方法getit。但是idk怎么做,当我尝试在方法运行中使用方法getit中的代码时,它没有接受,因为它发现了Bundle savedInstanceState的一些错误... 有人可以做我应该做的事吗?

由于

1 个答案:

答案 0 :(得分:0)

onCreate方法中,将Bundle savedInstanceState声明为final

protected void onCreate(final Bundle savedInstanceState) {
    //...
}

现在你可以做到

Timer timer = new Timer( );
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        getit(savedInstanceState);
    }
}, Long.parseLong(setcas));

使用Handler进行编辑:

Handler handler = new android.os.Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        getit(savedInstanceState);
    }
}, Long.parseLong(setcas));