使用另一个类检索GPS位置后关闭Acitivity的问题



情况是这样的:

  1. 活动A从类B调用getLocation()方法

B类处理获取GPS位置。

2一旦B班完成GPS检索,活动A应结束地方

活动A调用类似于:

B.getLocation()
this.finish()

即使用来自B的方法获得位置,然后完成其自身。事实上,A在B有机会找到位置之前就关门了。

我如何正确地构建它,使A等待直到B完成?

这里缺少设计。事实上,不能只为另一个调用一个Activity的方法,因为目前只有一个Activity可以在前台。您的活动应使用Intents进行交流。以下是它应该如何工作:

  1. Activity A使用Intent启动Activity B
  2. Activity B获取位置并使用setResult()方法将其返回给Activity A
  3. Activity A在其onActivityResult()方法中读取Activity B的结果
  4. Activity A饰面

这感觉是一个更好的实现。实际上,如果Activity B只是获取位置,那么您可以简单地将其实现为Service并将其绑定到Activity A。希望这能有所帮助。

好的,如果你熟悉Basic Java,你需要做一些回调机制。。在这里,我只是想给你一个Java回调的概述。。。

//Here is you class B :
class ClassB {
interface ILocationListerner {

 void setLocations(float lat, float long);

}

ILocationListerner mLocationListener = null;

/// Here is your static method that set Listerner and call by Activity A
public void static setLocationListerner(ILocationListerner listener){
this.mLocationListener = listener;

}

//Gel loaction method.
public static void getLocation(){
////
...
////
mLocationListener.setLocation(lat,lng);


}

}// ClassB ends here

/// Activity A
class ActivityA extends Activity {

 onCreate(){

 ClassB.setLocationListerner(new ILocationListerner {
      @Override
      void setLocations(float lat, float long){
      /// do your stuff and call finish();
      }
} );
ClassB.getLocation();

}
}
}

希望你能理解。。。

相关内容

  • 没有找到相关文章

最新更新