android修改ipv4,Android 设置ipv4优先策略访问网络

在IPv6环境下遇到网络加载问题时,可以通过设置使应用程序优先使用IPv4进行网络访问。本文介绍了如何为OkHttp和Glide框架配置IPv4优先策略,以提升网络速度和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ipv6环境下可能会出现网络无法加载的情况,我们可以考虑使用ipv4优先的方案设置dns以加快网络加载速度。

1. 设置okhttp优先使用ipv4

/**

* wifi环境下优先使用ipv4

*/

public class MyDns implements Dns {

@Override

public List lookup(String hostname) throws UnknownHostException{

if (hostname == null){

throw new UnknownHostException ("hostname == null") ;

}else{

try{

List inetAddressList = new ArrayList<>();

InetAddress[] inetAddresses = InetAddress.getAllByName (hostname) ;

for (InetAddress inetAddress: inetAddresses){

if (inetAddress instanceof Inet4Address){

inetAddressList.add(0, inetAddress) ;

}else{

inetAddressList.add(inetAddress);

}

}

return inetAddressList;

}catch (NullPointerException var4){

UnknownHostException unknownHostException = new UnknownHostException("Broken system behavior");

unknownHostException.initCause(var4);

throw unknownHostException;

}

}

}

}

OkHttpClient.Builder builder = new OkHttpClient.Builder();

builder.dns(new MyDns());

OkHttpClient client = builder.build();

2. 设置图片框架Glide优先ipv4

引入

implementation 'com.github.bumptech.glide:glide:4.11.0'

annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

implementation "com.github.bumptech.glide:okhttp3-integration:4.11.0"

自定义类继承AppGlideModule,添加类注解@GlideModule

@GlideModule

public class OkHttpGlideModule extends AppGlideModule {

@Override

public boolean isManifestParsingEnabled() {

return false;

}

@Override

public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {

super.registerComponents(context, glide, registry);

OkHttpClient.Builder builder = new OkHttpClient.Builder();

builder.dns(new MyDns());

builder.followRedirects(true);

// 设置连接超时

builder.connectTimeout(10, TimeUnit.SECONDS);

// 设置socket超时

builder.readTimeout(60, TimeUnit.SECONDS);

builder.writeTimeout(60, TimeUnit.SECONDS);

OkHttpClient okHttpClient = builder.build();

registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient));

}

}

在AndroidManifest.xml中中添加项,如:

android:name="com.xxx.xxx.OkHttpGlideModule"

android:value="AppGlideModule"/>

混淆

-keep public class * implements com.bumptech.glide.module.GlideModule

-keep public class * extends com.bumptech.glide.module.AppGlideModule

-keep public enum com.bumptech.glide.load.ImageHeaderParser$**{

**[] $VALUES;

public *;

}

-keep class com.bumptech.glide.GeneratedAppGlideModuleImpl {*;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值