0

アプリを完成させようとしていますが、「バグ」に気づきました。ユーザーがサービスを開始するボタンを押してから、サービスを開始する別のボタンを押すと、他の情報が含まれているため、サービスは再起動され、最初の開始は単に終了します。同じコードで別の名前の100万のサービスクラスのように書くことになっているという意味ではありませんか?したがって、各ボタンで各サービスが開始されます。少なくとも、そうはなりません。

それで、同じサービスを再利用し、サービスに複数のサービスを含める方法はありますか?それは悪い説明だったと思いますが、少なくとも誰かが私の言いたいことを理解し、私を助けたいと思っています:)

ありがとう!

4

2 に答える 2

1

チャットで議論された解決策:

https://chat.stackoverflow.com/rooms/23522/discussion-between-alex-oliveira-and-guiceu

問題は、あなたがstartService毎回電話をかけていることです。解決策は、呼び出しを に変更してbindService、サービスが再起動されないようにすることです。

Service は、バインドされた Context がなくなるまで実行されます。アクティビティのみをバインドすると、アクティビティがなくなったときにサービスを停止できます。アプリケーションの起動中に継続的に実行する必要がある場合は、アプリケーション コンテキストから呼び出してみてください。

于 2013-01-28T20:48:45.847 に答える
0

さまざまなサービスの意味がわかりませんが、ボタンのクリックに基づいてさまざまな情報を渡すだけの場合は、エクストラを介して情報を渡すことができます。ボタンがあるクラスでは、ボタンのクリックごとにこれに似たものを配置します。

    Intent i = new Intent(FirstActivity.this, SecondActivity.class);   
    String values = "something";
    i.putExtra("EXTRASNAME", values);

次に、次のクラスで値を受け取ります

    Bundle extras = getIntent().getExtras();
    String values = extras.getString("EXTRASNAME");

異なるボタンが (YES OR NO) などの値である場合、値「YES」または値「NO」を同じエクストラ文字列に入れ、次のアクティビティで値を受け取ったときに単純な if{} ステートメントを実行して、エクストラ値に応じてアクティビティにさまざまなことをさせます。エクストラを使用すると、putBoolean/getBoolean および putInt/getInt も実行できます。お役に立てれば。

于 2013-01-28T18:41:01.347 に答える