所有活动中的服务和活动沟通,方法更新

时间:2013-08-07 23:16:07

标签: android service

在第一个活动中,我开始使用此服务:

    public class TaskMsg extends Service
{       
    private static Timer timer; 
    private Context ctx;

    public IBinder onBind(Intent arg0) 
    {
          return null;
    }

    public void onCreate() 
    {
          super.onCreate();
          timer = new Timer();
          ctx = this; 
          startService();
    }

    private void startService()
    {           
        timer.scheduleAtFixedRate(new mainTask(), 0, 35000);
    }

    private class mainTask extends TimerTask
    { 
        public void run() 
        {
            toastHandler.sendEmptyMessage(0);                       
        }
    }    

    public void onDestroy() 
    {   
        timer.cancel();
        super.onDestroy();          
    }

    private final Handler toastHandler = new Handler()
    {
        @Override
        public void handleMessage(Message msg)
        {
            // for example, 2*3;
        }
    }
}

在handleMessage方法中我有几个操作。它工作正常。
但我有问题,因为我想调用活动(来自此服务),在服务中有新的结果操作。在我项目的所有Activity中,我有方法Update。我只需要Handler in Service向所有Activity或当前Activity返回新信息的信息。

2 个答案:

答案 0 :(得分:0)

可能是您可以使用自定义广播接收器。您可以通过该服务广播该消息,并在您的活动中编写接收器。在活动中的onReceive()中,您可以调用update()方法。

希望你明白我的意思

答案 1 :(得分:0)

谢谢!对于少数活动来说它是好的解决方案

    Intent intent = new Intent(Activity1.UPDATE);        
    sendBroadcast(intent);

    intent = new Intent(Activity2.UPDATE);        
    sendBroadcast(intent);

    intent = new Intent(Activity3.UPDATE);        
    sendBroadcast(intent);