2011-12-28 6 views
1

私はServiceのアプリケーションを持っています。このサービスはworker Threadを開始し、このスレッドはServiceのインスタンスへのポインタを必要とします(このサービスのいくつかのメソッドを呼び出します)。Android:サービスへのポインタを取得するには?

今私はちょうど私の自身のRunnableコンストラクタにServiceonCreate()方法からthisポインタを渡すが、私は私のアプリを閉じるまで、それが正常に動作します。アプリが再起動されると、ポインタで何かが間違ってしまう。私はまだ何が間違っているのか分かりませんが、ServiceのインスタンスへのポインタがServiceの別のインスタンスへのポインタであり、Runnableへのポインタも間違っています。

もし私が私のアプリを殺すなら、次に正しく動作しますが、再起動後に同じ問題が起こっています。

onCreate()メソッドから始まるスレッドから私のサービスのインスタンスへのポインタを取得するには、onCreate()サービスのメソッドからthisポインタを渡すことができないと思われますか?

更新日:ちょうど同じことがわかりましたsingleton issueRunnableはシングルトンでした。しかし、私はまだAndroidでシングルトンを使わないこと以外は良い解決策を見つけることができません。たぶん、どんな提案?

答えて

1

このスレッドは、Serviceのインスタンス(このサービスのいくつかのメソッドを呼び出します)へのポインタを必要とします。

Javaにはポインタがありません。 Javaに相当するものは「オブジェクト参照」です。

私は私のアプリ

を閉じるまでのAndroidで「アプリ」を「閉じた」というような概念はありません。

私はまだ何が間違っているのか分かりませんが、ServiceのインスタンスへのポインタがServiceの別のインスタンスを変えるポインタであり、Runnableへのポインタも間違っているようです。あなたは、元のServiceを停止したスレッドを漏洩した場合、極めて可能です

は、再度Serviceを起動しました。あなたはうまく2つの糸で巻かれているかもしれません.1つはあなたのServiceの欠けたコピーを保持しています。

どのように私はonCreate()メソッドから始まるスレッドから自分のサービスのインスタンスへのポインタを取得できますか?

これは問題ではありません。あなたの問題は、それが何であれ、どこにでもあります。

+0

ありがとうございました。申し訳ありませんが、誤った用語ではなく、 "アプリケーション"について:システム設定では、私は正確に "アプリケーション管理"に行きます。私はインストールした "アプリケーション"を停止できます。私は正しい言葉が活動だと思いますか?そして、私は戻ってチェックしたいと思います:一般的に、これは 'Service.onCreate()'の中の何かに 'this'参照を渡すことですか? –

+0

@dimonomid: "システム設定で私は正確に"アプリケーション管理 "に行くことができます。私はインストールした"アプリケーション "を止めることができます。 - ユーザーは通常これをしません。 "これで、この参照をService.onCreate()の何かに渡すことはできますか?" - 一般的に、はい。 – CommonsWare

+0

私はユーザーがこれを行うべきだとは言わなかった、なぜ私が "app"という用語を使ったのか説明しようとした。さて、バグを見つけました。もう一度感謝します。シングルトンの問題がありました。私は自分の質問を更新しました。あなたはこのアップデートを見て、何かを提案してもらえますか? –

関連する問題