我有一个服务类来验证标记和圆圈之间的位置。
public class VerifyPositionService extends Service{
public static boolean isRunning;
private float[] distance = new float[2];
int i;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
i = 0;
if (MainActivity.circles.size() > 0){
for(Circle c : MainActivity.circles){
Location.distanceBetween( MainActivity.marker.getPosition().latitude, MainActivity.marker.getPosition().longitude,c.getCenter().latitude, c.getCenter().longitude, distance);
if( distance[0] < c.getRadius() ){
Toast.makeText(getApplicationContext(), "in" , Toast.LENGTH_LONG).show();
}
else
Toast.makeText(getApplicationContext(), "out" , Toast.LENGTH_LONG).show();
i++;
}
}
else
Toast.makeText(getApplicationContext(), "none" , Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
}
所以,在我的主要活动中,在方法onCreate中,我实例化了一次服务:
Intent intent = new Intent(this, VerifyPositionService.class);
startService(intent);
服务只运行一次,给我祝酒:无。
当我添加圈子时,服务不会返回消息..它会给我吐司:in或out。 谁能帮忙吗?
答案 0 :(得分:0)
该服务仅在启动时运行一次start方法。您的服务将继续运行,但在示例中您没有做任何事情。
因为你收到了#34;没有&#34;在你的祝酒词中,当你的服务开始时,你的MainActivity中没有任何圈子。
您需要将位置验证码放入其他方法中,并随时要求您的服务执行。 或者,如果要定期执行计算,请将代码放在线程中并在onStartCommand方法中启动线程。另外,在线程中放入一个sleep来指定你希望方法执行的频率。