インターネットから情報をポーリングするタイマーがいくつかあります。そうしようとするとエラーが発生すると、ネットワーク接続をチェックし、使用できない場合はタイマーを停止します。私の問題は、ネットワークが再び利用可能になったときにタイマーを再起動したいということです。何も実行されていないときの接続の変化を監視する方法
ネットワークが離れて戻ってこない場合、おそらく実行中のアプリケーションのすべての部分が殺されている可能性があります。私の質問は...どこでそれらのイベントに常に対応できるように、ネットワーク接続の変更レシーバーを作成するのですか?明らかに活動にはない。
私はもともとそれを拡張アプリケーションクラスに入れました。私はそれが正しいかどうかは分かりませんが、今はそれがなくなっても、あなたのアプリの一部が利用されるたびに再び作成されることがわかりました。それはまだ正しい場所ですか?
私はちょっと混乱しています...ネットワークの変更を監視し、接続メッセージがあればタイマーを再起動するスタンドアロンレシーバクラスを作成すると考えていました。しかし、私は考えていました....これを具体化するものは何ですか?何もしなかった場合、どのように動作するのでしょうか?しかし、同じ質問が私のOnBootReceivedクラスに行きます....私はそのクラスをどこでもインスタンス化して登録することは何もしませんが、まだ動作します! (それをAndroidManifestとBOOT_COMPLETEDインテントフィルタに入れる以外に)。そのような受信機は特別ですか?私は自分のネットワーク変更受信機で同じことをやってみましたが、どんなネットワーク変更にも反応しませんでした。私は最終的にそれを私のアプリケーションクラスに入れ、それをインスタンス化し、それを登録しました、そしてそれは放送を受信しました。
私はコードを持っていますが、これはコードに依存しない質問のようなものです。私は自分のコードがどこにあるのかを明確にしようとしています。それを過ぎてもまだ動かない場合は、投稿することができます。
ですから、私はです。ほぼです。私のコードでこれ以上持っていれば、接続状態が変わったときにメッセージを受け取るのですか?もしそうなら、私はではなく、を受け取っています。これは私が持っているものです。
また、何とか起動時に登録する必要がありますか?ビデオには、アプリが実行されていないときにマニフェストインテントフィルタを使用して更新を取得すると記載されていますが、何らかの理由で登録が必要な場合は表示されません(登録を行う場合はインスタンスを登録しません。あなたが離れて行く中で、それを登録したものは何でもオブジェクトときに、そのインスタンスは消えません)
コード:?
public class NetworkConnectivityReceiver extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Connection message received.");
}
}
<receiver android:name=".NetworkConnectivityReceiver" >
<intent-filter>
<action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION"></action>
</intent-filter>
</receiver>
それを見て....ありがとう! – Rob
私は関連部分を見てきましたが、私はまだ何とかそれを見逃しています。何もしないコードで質問を更新しました。 – Rob
私は間違ったインテントフィルターをそこに置いていたようですが、何らかの理由でそれが問題になることはありませんでした。今は私がそれをしないで、マニフェストだけを使用して、私はこれを使用する必要があります:
Rob