-1

最初のアクティビティで、このサービスを開始しました:

    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 メソッドで。それはうまくいっています。
しかし、サービス中の新しい結果操作を持つアクティビティを(このサービスから)呼び出したいため、問題があります。私のプロジェクトのすべてのアクティビティには、メソッド Update があります。Handler in Service がすべてのアクティビティまたは現在のアクティビティに新しい情報を返したという情報だけが必要です。

4

2 に答える 2

0

カスタムブロードキャストレシーバーを使用できる場合があります。サービスからメッセージをブロードキャストし、アクティビティにレシーバーを書き込むことができます。アクティビティの onReceive() で、 update() メソッドを呼び出すことができます。

私の言いたいことを理解してほしい

于 2013-08-07T23:49:13.510 に答える