小编Har*_*men的帖子

Android 定时器只触发一次

我有这段代码,我想尝试每小时发送一封电子邮件报告(在示例中为每秒)。如果没有覆盖,请在一小时内重试,等等。不知何故,我设法打破了 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 timer

4
推荐指数
1
解决办法
6321
查看次数

如何在Android studio中调用.so库中的方法

我想在我的项目中使用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引用方法.

android serial-port native shared-libraries

4
推荐指数
1
解决办法
3686
查看次数

标签 统计

android ×2

native ×1

serial-port ×1

shared-libraries ×1

timer ×1