0

アクティビティを使用してサービスを開始したい。具体的にはIntentServiceです。しかし、私には2つの問題があります:

私のコードを開始するとき

private void switchService(boolean isEnable, String serviceName){
        Intent intent = new Intent();
        intent.setClassName(TestPhoneServiceActivity.this, serviceName);
        if(isEnable){
            startService(intent);
        }
        else{
            if(isServiceRunning(serviceName)){
                stopService(intent);
                while(isServiceRunning(serviceName)){

                }
                Toast.makeText(this, "Service stopped Successfully!", Toast.LENGTH_LONG).show();
            } 
        }
    }

DDMS に次のエラーがあります。Unable to start service Intent { cmp=com.xx.android/.AndroidPhoneService }: not found

しかし、道は正しい。では、何が問題なのでしょうか。また、システム サービスを呼び出したいと考えています。構成ファイルに書き込む必要がありますか?

次に、intent.setClass を使用して IntentService を開始します。

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE)

このサービス オブジェクトが見つかりません。IntentService は自動的に終了および破棄されますか?また、IntentService のライフサイクルは他の Service とは異なりますか?

4

1 に答える 1

0

そのようにサービスのクラスの名前の代わりにサービスのクラスを渡す必要があります

    Intent intent = new Intent();
    intent.setClassName(TestPhoneServiceActivity.this, MyIntentService.class);
    if(isEnable){
        startService(intent);
    }

複数の同じインテント サービスを開始すると、作業が完了した後にインテント サービスが停止し、キューに入れられて順番に実行されるため、else ブロックは冗長になります。

そして、マニフェスト内でサービスを宣言したことを確認してください。

于 2012-11-20T09:40:06.230 に答える