バックグラウンドスレッドでAndroidNougatのインターネット接続を確認してください

Aswin P Ashok

私はアンドロイドヌガーをターゲットにしたアンドロイドアプリケーションを開発しています。インターネットに接続されている場合は、バックグラウンドスレッドでローカルデータベースへのリモートSQL同期を実行する必要があります。ブロードキャストレシーバーを使用して接続を検出しようとしましたが、Android Nで起動しません。バックグラウンドでそれを行うにはどうすればよいですか(インターネットの可用性を確認してください)。例が役に立ちます

私はこれを試しました

Androidマニフェスト

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

NetworkChangeReciever.java

public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
        Toast.makeText(context,"Internet state changed",Toast.LENGTH_LONG).show();
}
Aswin P Ashok

私は自分の質問に対する答えを得ました。

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />マニフェストに登録されているアクション付きのブロードキャストレシーバーは、Android Nでは起動しません。ただし、プログラムでブロードキャストを登録して機能させることはできます。ただし、アプリが強制終了されると機能しません。

それから私の場合、2つのオプションがありました(それは私が思っていたものです)、同期操作をスケジュールする

  • GCMネットワークマネージャー

    または

  • ジョブスケジューラ

ジョブスケジューラの問題は、APIレベル21以上でのみ機能することですが、機能するためにGooglePlayサービスを必要としません。一方、GCMネットワークマネージャーには下位互換性がありましたが、実行するにはGooglePlayサービスが必要です。

次にIntelligent Job Schedulingにアクセスしましたが、Firebase JobDispatcherを使用すると言われました

Firebase JobDispatcherは、ジョブをディスパッチ(実行)するための実装としてGoogle Playサービスの使用をサポートしていますが、ライブラリでは他の実装を定義して使用することもできます。たとえば、JobSchedulerを使用するか、独自のカスタムコードを作成することができます。この汎用性のため、アプリが5.0(APIレベル21)より前のバージョンのAndroidをターゲットにしている場合は、このFirebaseJobDispatcherを使用することをお勧めします。

そして私はそのアドバイスを受けました、そしてこれは私がしたことです、

同期ジョブを実行するサービス(SyncService.java)を作成し、

マニフェストにそのサービスを追加しました

<service
    android:exported="false"
    android:name=".SyncService">
        <intent-filter>
            <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
        </intent-filter>
</service>

そして私の活動では、同期するジョブを作成して実行しました

Job syncJob=jobDispatcher.newJobBuilder()
            .setService(SyncService.class)
            .setRecurring(true)
            .setLifetime(Lifetime.FOREVER)
            .setRecurring(true)
            .setLifetime(Lifetime.FOREVER)
            .setTrigger(Trigger.executionWindow(3,600))
            .setConstraints(Constraint.ON_ANY_NETWORK) //does job when network is available
            .setReplaceCurrent(true)
            .setTag("syncService")
            .build();
jobDispatcher.mustSchedule(syncJob);

そして、これはバックグラウンドで機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

30分ごとにバックグラウンドサービスでインターネット接続を確認してください

分類Dev

リポジトリ情報のダウンロードに失敗しました。インターネット接続を確認してください

分類Dev

リポジトリ情報のダウンロードに失敗しました。インターネット接続を確認してください

分類Dev

インターネット接続を確認してくださいOKHTTP

分類Dev

Alamofireを使用してiOSデバイスでインターネット接続を確認してみてください

分類Dev

Cisco RV320ルータのファームウェアをアップグレードしましたが、接続されているデバイスがインターネットにアクセスできなくなりました

分類Dev

バックエンドでグーグルアンドロイドサブスクリプションステータスを確認してください

分類Dev

API29上でインターネット接続を確認してください

分類Dev

Android WebView(Cordova)でインターネット接続を確認してください

分類Dev

C#でインターネット接続が利用可能かどうかを確認してください

分類Dev

インターネット接続の問題を確認してください

分類Dev

実際のインターネット接続を確認してください

分類Dev

インターネット接続の安定性を確認してください

分類Dev

PPAにアクセスできません...インターネット接続を確認してください

分類Dev

インターネット接続が悪いことを確認してくださいandroidstudio

分類Dev

ログインできませんでした。ネットワーク接続を確認して、もう一度お試しください

分類Dev

春の統合| sftpインバウンドアダプタを介して接続するときに、長い間RUNNABLEでスタックしているスレッドを参照してください

分類Dev

VBScriptでネットワーク接続を確認してください

分類Dev

ノードJSとmysqlが接続していません(クライアントはサーバーから要求された認証プロトコルをサポートしていません。mysqlクライアントのアップグレードを検討してください)

分類Dev

14.04 Software Updaterに、リポジトリ情報のダウンロードに失敗したと表示されます。インターネット接続を確認してください

分類Dev

Android、ボタンをクリックしてサーバー接続を確認してください

分類Dev

AWS CodeBuild –ビルドにはインターネット接続がありません。サブネットネットワーク構成を確認してください

分類Dev

パッケージを更新できません-「パッケージファイルのダウンロードに失敗しました。インターネットを確認してください...」または「認証されていないソースからのインストールが必要です」

分類Dev

Delphi:別のスレッドでインターネット接続を確認する

分類Dev

Firestoreクエリを実行する前にインターネットデータ接続を確認してください

分類Dev

バックグラウンドでのBluetoothとインターネット接続(android)

分類Dev

インターネットに接続された 2 つのネットワーク インターフェイス。ドメイン名に応じて使用するものを選択してください

分類Dev

リリースモードでのインターネット接続の確認が機能しない

分類Dev

Android-URLアドレスにpingしてインターネット接続を確認する

Related 関連記事

  1. 1

    30分ごとにバックグラウンドサービスでインターネット接続を確認してください

  2. 2

    リポジトリ情報のダウンロードに失敗しました。インターネット接続を確認してください

  3. 3

    リポジトリ情報のダウンロードに失敗しました。インターネット接続を確認してください

  4. 4

    インターネット接続を確認してくださいOKHTTP

  5. 5

    Alamofireを使用してiOSデバイスでインターネット接続を確認してみてください

  6. 6

    Cisco RV320ルータのファームウェアをアップグレードしましたが、接続されているデバイスがインターネットにアクセスできなくなりました

  7. 7

    バックエンドでグーグルアンドロイドサブスクリプションステータスを確認してください

  8. 8

    API29上でインターネット接続を確認してください

  9. 9

    Android WebView(Cordova)でインターネット接続を確認してください

  10. 10

    C#でインターネット接続が利用可能かどうかを確認してください

  11. 11

    インターネット接続の問題を確認してください

  12. 12

    実際のインターネット接続を確認してください

  13. 13

    インターネット接続の安定性を確認してください

  14. 14

    PPAにアクセスできません...インターネット接続を確認してください

  15. 15

    インターネット接続が悪いことを確認してくださいandroidstudio

  16. 16

    ログインできませんでした。ネットワーク接続を確認して、もう一度お試しください

  17. 17

    春の統合| sftpインバウンドアダプタを介して接続するときに、長い間RUNNABLEでスタックしているスレッドを参照してください

  18. 18

    VBScriptでネットワーク接続を確認してください

  19. 19

    ノードJSとmysqlが接続していません(クライアントはサーバーから要求された認証プロトコルをサポートしていません。mysqlクライアントのアップグレードを検討してください)

  20. 20

    14.04 Software Updaterに、リポジトリ情報のダウンロードに失敗したと表示されます。インターネット接続を確認してください

  21. 21

    Android、ボタンをクリックしてサーバー接続を確認してください

  22. 22

    AWS CodeBuild –ビルドにはインターネット接続がありません。サブネットネットワーク構成を確認してください

  23. 23

    パッケージを更新できません-「パッケージファイルのダウンロードに失敗しました。インターネットを確認してください...」または「認証されていないソースからのインストールが必要です」

  24. 24

    Delphi:別のスレッドでインターネット接続を確認する

  25. 25

    Firestoreクエリを実行する前にインターネットデータ接続を確認してください

  26. 26

    バックグラウンドでのBluetoothとインターネット接続(android)

  27. 27

    インターネットに接続された 2 つのネットワーク インターフェイス。ドメイン名に応じて使用するものを選択してください

  28. 28

    リリースモードでのインターネット接続の確認が機能しない

  29. 29

    Android-URLアドレスにpingしてインターネット接続を確認する

ホットタグ

アーカイブ