在Android平台上使用QuickJS作为JavaScript引擎时,可以通过以下步骤实现定时器功能:
setInterval
或setTimeout
函数来设置定时器。以下是一个简单的示例,展示了如何在Android中使用QuickJS实现定时器功能:
Java代码:
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import com.eclipsesource.v8.V8;
import com.eclipsesource.v8.V8Array;
import com.eclipsesource.v8.V8Object;
import com.eclipsesource.v8.V8Script;
public class MainActivity extends AppCompatActivity {
private V8Runtime v8Runtime;
private Handler handler = new Handler(Looper.getMainLooper());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化QuickJS引擎
V8 runtime = V8.createV8Runtime(getApplicationContext());
v8Runtime = runtime;
// 加载JavaScript代码
String script = "function timerCallback() { console.log('Timer triggered!'); } setInterval(timerCallback, 1000);";
V8Script v8Script = v8Runtime.executeScript(script);
// 设置一个按钮来停止定时器
Button stopButton = findViewById(R.id.stop_button);
stopButton.setOnClickListener(v -> {
v8Runtime.executeScript("clearInterval(window.timerId);", v8Script);
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放QuickJS资源
if (v8Runtime != null) {
v8Runtime.release();
v8Runtime = null;
}
}
}
activity_main.xml布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/start_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Timer"/>
<Button
android:id="@+id/stop_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop Timer"/>
</LinearLayout>
在这个示例中,我们创建了一个QuickJS环境,并加载了一个包含定时器逻辑的JavaScript脚本。我们还添加了一个按钮来启动和停止定时器。当点击“Start Timer”按钮时,会设置一个每秒触发一次的定时器,而点击“Stop Timer”按钮则会清除该定时器。