Android开发的菜鸟小记
1.主线程异常:添加网络连接;
2.权限异常;
3.空指针异常:NullException;
添加网络权限:
DEBUG:Connected to the target VM, address: 'localhost:8603', transport: 'socket'
异常:没有找到原因!
android.os.networkOnMainThreadException
at |
/* Exception */ |
at |
org.zeromq.ZMQ$Socket.connect( ) |
at |
Socket.ZClient.sendMsg( ) |
...
使用ZClient类时同样报错于此处。
代码如下:
原因:在4.0之后在主线程里面执行Http请求都会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。
解决办法:
1.在onCreate()前面加入StrictMode代码:
//详见StrictMode文档
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
2.
二:使用Thread、Runnable、Handler这三个类:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.share_mblog_view);
new Thread(runnable).start();
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bundle data = msg.getData();
String val = data.getString("value");
Log.i("mylog","请求结果为-->" + val);
}
}
Runnable runnable = new Runnable(){
@Override
public void run() {
//
// TODO: http request.
//
Message msg = new Message();
Bundle data = new Bundle();
data.putString("value","请求结果");
msg.setData(data);
handler.sendMessage(msg);
}
}
权限异常:
权限异常应该添加在<application > </application>之后。
空指针异常:
因为前面的异常,指针没有创建,但是在后面却执行了注销操作。
终于成功的使用了JZMQ。
jni->opencv_java3.so(native)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?