1.Android 9之後 網絡請求需要加載適配文件:
network_security_config.xml:
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
在應用配置文件.xml中 Application中配置:
android:networkSecurityConfig="@xml/network_security_config"
加載配置文件即可
2.解決Handler內存溢出問題創建靜態並且繼承Handler的類,使用WeakReference弱引用加載activity在其中使用handler的各種功能
//防止Handler內存溢出 創建靜態繼承Handler子類
static class MyHandler extends Handler {
private WeakReference<MainActivity> wr;
public MyHandler(MainActivity ma){
wr = new WeakReference<MainActivity>(ma);
}
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what == 1) {
wr.get().img.setVisibility(View.GONE);
wr.get().txt.setText("打到了" + wr.get().numberClick + "只,共10只");
}else if(msg.what == 2) {
wr.get().img.setVisibility(View.VISIBLE);
}else if(msg.what == 3) {
wr.get().flag = false;
wr.get().btn.setText("開始");
wr.get().txt.setText("點擊開始吧....");
wr.get().img.setVisibility(View.GONE);
wr.get().numberClick = 0;
}
}
}
3.runOnUiThread 重寫run方法 可以在子線程中使用在主線程中更新UI界面