情况是这样的:
- 活动A从类B调用
getLocation()
方法
B类处理获取GPS位置。
2一旦B班完成GPS检索,活动A应结束地方
活动A调用类似于:
B.getLocation()
this.finish()
即使用来自B的方法获得位置,然后完成其自身。事实上,A在B有机会找到位置之前就关门了。
我如何正确地构建它,使A等待直到B完成?
这里缺少设计。事实上,不能只为另一个调用一个Activity
的方法,因为目前只有一个Activity
可以在前台。您的活动应使用Intents
进行交流。以下是它应该如何工作:
Activity A
使用Intent
启动Activity B
Activity B
获取位置并使用setResult()
方法将其返回给Activity A
Activity A
在其onActivityResult()
方法中读取Activity B
的结果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();
}
}
}
希望你能理解。。。