2012-07-26 70 views
1

我使用ICP以创建活动和服务之间的通信。 我可以使用界面从活动中调用服务的方法。Android:将数据从服务推送到活动

我的问题是,有时我想推动数据从服务到活动,我想从服务中调用活动的方法。例如:updateTextView(String msg);

我不想使用广播,因为我读到它不是非常高效。

我读了一些关于回调的东西,但我不知道如何创建它以及在哪里放置它。

谢谢!

回答

0

你可以把你开始服务的包。在要返回到活动的服务中填充该包。然后将该包返回到活动。

0

你可以通过Handler来试试。您在您的活动中创建了一个字段处理程序,而您的Service和onServiceConnected方法中的其他相同类将调用Service的方法setHandler。然后,您可以通过Service的处理程序将消息发送到Activity的处理程序字段。

public class mService extends Service{ 
private myHandler handler; 
..... 
    public void setHandler(myHandler activityHandler){ 
this.handler=activityHandler; 
} 
} 

public class Activity extends Activity{ 
    private myHandler activityHandler; 
    .... 
    public class myHandler extends Handler{ 

     @Override 
     public void handleMessage(Message msg){ 

      switch(msg.what){ 
      //Implement this 
      } 
     } 
} 
     private ServiceConnection mConnection = new ServiceConnection() { 

      @Override 
      public void onServiceConnected(ComponentName className, 
        IBinder service) { 
        ..... 
       mService= binder.getService(); 
       mBound = true; 
       mService.setHandler(dHandler); 
      } 

      @Override 
      public void onServiceDisconnected(ComponentName arg0) { 
       mBound = false; 
      } 
     }; 
} 
相关问题