2

基本的に、ネットワークへの接続が確立され、バックグラウンドにある必要があるときに、アプリがサーバーにデータを送信する必要があります。それでおしまい。

接続時にサービスを自動的に開始する方法はありますか? または、接続をテストし、このサービスを 30 分間隔で実行する通常のサービスを使用する必要がありますか? AlarmManager のようなものを使用して接続を確認する必要がありますか? これはリソースの浪費のように思えます。私の知る限り、リソースが必要な場合、Android はサービスを停止できます。

提案またはさらに良い-最適な方法のサンプルはありますか?

ありがとうございました。

4

1 に答える 1

8

broadcast receiverこの目的でa を使用できます。SOでこの質問を参照してください。

インターネット接続が確立されているかどうかを確認できます。定期的に確認する必要はありません。

(以前紹介したリンクより引用)

<receiver android:name=".ReceiverName" >
    <intent-filter >
        <action android:name="android.net.wifi.STATE_CHANGE" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

public class ReceiverName extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
        if (cm == null)
            return;
        if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
            // Send here
        } else {
            // Do nothing or notify user somehow
        }

    }
}

お役に立てれば!

于 2012-05-20T17:50:58.070 に答える