Mengurus Perubahan Kesambungan Internet dalam Android: Panduan Komprehensif
Dalam Android, pengesanan perubahan sambungan adalah penting untuk aplikasi yang memerlukan akses internet yang boleh dipercayai. Walau bagaimanapun, bergantung semata-mata pada perubahan sambungan boleh menyebabkan apl berasaskan web terdedah kepada kehilangan internet secara tiba-tiba. Artikel ini meneroka penyelesaian menyeluruh untuk mencipta penerima siaran yang mendengar perubahan sambungan Internet.
Masalah Asal:
Kod yang disediakan memantau perubahan sambungan tetapi gagal mengesan secara tiba-tiba kehilangan internet tanpa perubahan dalam kesambungan.
Penyelesaian:
Untuk menangani isu ini, kita perlu mencipta penerima siaran yang mendengar secara khusus perubahan sambungan Internet, terputus daripada ketersambungan perubahan. Begini caranya:
Melaksanakan Penerima Siaran:
Buat kelas baharu, NetworkChangeReceiver, yang memanjangkan BroadcastReceiver. Dalam kelas ini, ganti kaedah onReceive untuk mengendalikan perubahan sambungan Internet:
<code class="java">public class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { // Check the connectivity status int status = NetworkUtil.getConnectivityStatusString(context); Log.e("Network reciever status", String.valueOf(status)); // Perform actions based on connectivity status if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) { // Handle no internet connectivity new ForceExitPause(context).execute(); } else { // Handle internet connectivity restored new ResumeForceExitPause(context).execute(); } } }</code>
Mencipta Kaedah Utiliti:
Sertakan kelas util, NetworkUtil, untuk mengabstraksikan logik untuk menentukan status sambungan:
<code class="java">public class NetworkUtil { // Define connectivity types and status public static final int TYPE_WIFI = 1; public static final int TYPE_MOBILE = 2; public static final int TYPE_NOT_CONNECTED = 0; public static final int NETWORK_STATUS_NOT_CONNECTED = 0; public static final int NETWORK_STATUS_WIFI = 1; public static final int NETWORK_STATUS_MOBILE = 2; // Get connectivity status as an integer public static int getConnectivityStatus(Context context) { // Obtain the ConnectivityManager ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // Get the active network NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); // Check if there is an active network if (activeNetwork != null) { // Check network type if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { return TYPE_WIFI; } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { return TYPE_MOBILE; } } // No active network, return no connectivity return TYPE_NOT_CONNECTED; } // Get connectivity status as a string (Wifi, Mobile, Not Connected) public static int getConnectivityStatusString(Context context) { int conn = getConnectivityStatus(context); int status = 0; // Map connectivity status to string switch (conn) { case TYPE_WIFI: status = NETWORK_STATUS_WIFI; break; case TYPE_MOBILE: status = NETWORK_STATUS_MOBILE; break; case TYPE_NOT_CONNECTED: status = NETWORK_STATUS_NOT_CONNECTED; break; } return status; } }</code>
Mengemas kini Fail Manifes:
Tambahkan kebenaran yang diperlukan dan isytiharkan penerima siaran dalam fail AndroidManifest.xml anda:
<code class="xml"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <receiver android:name="NetworkChangeReceiver" android:label="NetworkChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> </intent-filter> </receiver></code>
Dengan penyelesaian komprehensif ini, aplikasi Android anda kini boleh memantau perubahan sambungan internet dan mengendalikannya dengan sewajarnya, memastikan pengalaman pengguna yang lebih dipercayai.
Atas ialah kandungan terperinci Bagaimanakah saya boleh membuat penerima siaran dalam Android untuk mengesan dan mengendalikan kedua-dua perubahan sambungan Internet dan kehilangan Internet secara tiba-tiba?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!