好吧,我有服务,我有一个活动。他们通过消息进行交流(它必须与消息进行通信,所以请不要告诉我有关意图或其他事情的信息)。
我收到服务中的Bundle,一切都好。
现在我收到了Bundle,我想做点什么。我想从“SomeClass”调用一个方法,但我不能,因为我在“IncomingHandler”类中。
从IncomingHandler内部调用SomeClass的最佳方法是什么?
提前致谢
class SomeClass implements ServiceConnection {
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MyService.MS_GET_SOMETHING:
Bundle received=msg.getData();
...
答案 0 :(得分:1)
如果你真的希望活动在服务上调用方法,那么就该了解AIDL,它允许Activity通过RPC机制对绑定服务进行函数调用。 Documentation found here.
答案 1 :(得分:0)
我已经实现了这个功能(活动中的服务调用方法):
服务发送广播消息。
Activity有一个本地嵌套的broadcastreceiver,可以调用父活动中的方法。
public class MainActivity extends Activity {
private BroadcastReceiver myReceiver = null;
class _RemoteTimeTrackerReceiver extends BroadcastReceiver {
@Override
public void onReceive (Context context, Intent intent) {
// call method in activity
reloadGui();
}
}
@Override
public void onResume() {
super.onResume();
if (myReceiver == null)
{
myReceiver = new _RemoteTimeTrackerReceiver();
IntentFilter filter = new IntentFilter(Global.REFRESH_GUI);
registerReceiver(myReceiver, filter);
}
reloadGui();
}
@Override
public void onPause() {
if (myReceiver != null)
{
unregisterReceiver(myReceiver);
myReceiver = null;
}
super.onPause();
}
void reloadGui() {}