2

サービスを使った簡単な例の実装に問題があります。Android開発者スキームに従って、私はなんとかサービスにバインドすることができました。サービスは完全に機能します。

私が実装したいのは、サービスの開始日です。私は

public class MyService extends Service {

    private Date _firstActivation= new Date();
    ....
    ....
    public Date GetFirstActivation() {
    return _firstActivation;
}
}

サービスにバインドするメインアクティビティでは、OnStartメソッド中に基本的な実装があります

 // Check if the Service is running and if it's running let's bind to the service through ServiceConnectionClass
    if (((MyApplication)getApplication())._serviceIsRunning)
    {
        Intent intent = new Intent(this, MyService.class);
        bindService(intent, mConnection, 0);
        _startingTime_TV.setText(_df.format(_myService.GetFirstActivation()));
    }
    else {
        _startingTime_TV.setText("Service Not Started");
    }

ここで、_myServiceはMyServiceであり、mConnectionはServiceConnectionです。

今私が期待しているのは、サービスが最初に開始されると、アクティビティを停止する(同時にバインドを解除する)たびに、テキストビューでアクティビティを再開する(同時にバインドする)たびに、常に同じように表示されることです。開始時間。

アクティビティを再開するたびに時間が変わるとどうなりますか...

誰かが手がかりを持っていますか?

4

1 に答える 1

2

のライフサイクルは次のようServiceに決定されます。-を介して開始された場合、バインドを解除bindServiceすると停止します-を介して開始された場合、またはAndroidOSがこれを必要とする場合ServicestartServicestopService

したがって、まず第一に、常にを介してサービスを開始しstartService、次にそれにバインドします。バインドでは、次のことができます。まだバインドされていない_startingTime_TV.setText(_df.format(_myService.GetFirstActivation())); ため。bindService(intent, mConnection, 0);コールバックを待つ必要があります:(onServiceConnectedの関数ServiceConnection

于 2012-10-22T14:15:46.753 に答える