我有这段代码,我想尝试每小时发送一封电子邮件报告(在示例中为每秒)。如果没有覆盖,请在一小时内重试,等等。不知何故,我设法打破了 sendUnsendReports() 中的计时器:它只触发一次。如果我删除对 sendUnsishedReports() 的调用,则计时器将正常工作。即使周围有 try-catch 块,计时器也只会触发一次。请指教。
private void createAndScheduleSendReport() {
delayedSendTimer = new Timer();
delayedSendTimer.schedule(new TimerTask() {
@Override
public void run() {
Log.w("UrenRegistratie", "Try to send e-mail...");
try{
sendUnsendedReports();
}
catch(Exception e){
// added try catch block to be sure of uninterupted execution
}
Log.w("UrenRegistratie", "Mail scheduler goes to sleep.");
}
}, 0, 1000);
}
Run Code Online (Sandbox Code Playgroud) 我想在我的项目中使用android serialport api.这样做我有很多麻烦.关于如何配置旧版本的gradle或如何使用NDK编译这些都没有用,存在大量相互矛盾的信息.我完全迷失了.
我发现的唯一可能是正确的是以下步骤:
进步#1.我将libserial_port.so放在src/main/jnilibs/armeabi中.当我将其作为zip文件打开时,它出现在apk中.
但是,如何告诉编译器使用此库?如何判断将其包含在项目输出中?如何引用此库中的方法?(有一个SerialPort.c和一个SerialPort.h)?在哪里放这些.mk文件?
我感觉我完全错过了每个人似乎都认为的信息.在api示例中,也没有引用本机库.
进度#2:在我的代码中,我尝试使用
System.loadLibrary("libserial_port")加载库;
该行抛出UnsatisfiedLinkError.本机代码库无法加载.java.lang.UnsatisfiedLinkError:无法从加载器dalvik.system.PathClassLoader加载libserial_port [DexPathList [[zip文件"/data/app/myapp.apk"],nativeLibraryDirectories=[/data/app -lib/myapp.apk,/ vendor/lib,/ system/lib]]]:findLibrary返回null
进度#3:链接器不支持带下划线的库名.
进度#4:链接器采用lib前缀.你应该将它从loadlibrary命令中删除.
现在我调用System.loadLibrary("serialport"); 我的图书馆名为libserialport.so.现在我不再得到UnsatisfiedLinkError了!
现在关闭以了解如何从lib引用方法.