PDA

View Full Version : چگونه یه اسکریپت رو فقط برای مدتی معین اجرا کنم



se8820726
پنج شنبه 06 فروردین 1394, 01:10 صبح
سلام من یه اسکریپت موقعیت یابی دارم و میخوام هروقت که اجرا شد فقط به مدت 2 دقیقه کار کنه و بعدش متوقف بشه


public class a implements LocationListener{
private LocationManager locationManager;
private String provider;
private Location lastloc;
private Context _context;


public a(Context context){
_context = context;
}


public void start(){
locationManager = (LocationManager) _context.getSystemService(Context.LOCATION_SERVICE );




locationManager.requestLocationUpdates(LocationMan ager.GPS_PROVIDER, 0, 1, (LocationListener) this);


new Timer().schedule(
new TimerTask(){
public void run() {
stop();
}
}
,System.currentTimeMillis(), 2*60*1000);
}


public void stop(){
Log.d("states","stop");
locationManager.removeUpdates((LocationListener) this);
}


@Override
public void onLocationChanged(Location location) {
Log.d("states", "onLocationChanged()");
lastloc = location;
}


@Override
public void onProviderDisabled(String arg0) {
}


@Override
public void onProviderEnabled(String arg0) {
}


@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
}


وقتی متد start() فراخوانی بشه اسکریپ شروع به کار میکنه
حالا میخوام بعد از گذشت 2 دقیقه متد stop() درونش رو اجرا کنم ولی نمیدونم چجوری؟

از newTimer().schedule استفاده کردم که جواب نمیده :(

storm_saeed
پنج شنبه 06 فروردین 1394, 02:35 صبح
handler.postDelayed(new Runnable(){
public void run() {
stop();
}}, 2*1000*60);

handler هم از نوع کلاس Handler هست
پارامتر دوم postDelayed میلی ثانیه هست که بعد از میلی ثانیه داده شده تابع run صدا زده میشه