Sim*_*mon 5 java multithreading android executorservice runnable
我想知道两种不同的启动可运行方法的性能和 cpu/ram 要求
我有一些代码每 10 毫秒收集一次传感器数据,并将这些值插入到后台线程上的数据库中(使用单线程执行器)。Executor服务创建如下:
executor = Executors.newSingleThreadExecutor();
一种方法是......
public void onSensorChanged(SensorEvent event) {
//get sensor values
//insert into database
executor.execute(new Runnable(){
//database insert code here
});
}
Run Code Online (Sandbox Code Playgroud)
我在教程中经常看到这种方法,但因为我每 10 毫秒执行一次,所以感觉资源密集型,因为每次检测到传感器值变化时我都会创建一个新对象。这个新对象是否每 10 毫秒就被覆盖一次?或者随着新对象的创建,它是否会占用越来越多的 RAM?
此后我重构了我的代码,使其看起来更像这样:
executor = Executors.newSingleThreadExecutor();
myRunnable = new MyRunnable();
class MyRunnable implements Runnable {
public void run() {
//database insert code here
}
}
public void onSensorChanged(SensorEvent event) {
//get sensor values
//insert into database
executor.execute(myRunnable);
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,我只实例化一个对象一次,而不是每次传感器发生变化时都实例化一次。我认为这比以前的方法具有更低的 RAM 使用率,这是正确的吗?有没有更有效/更好的方法来完成这项任务?
| 归档时间: |
|
| 查看次数: |
1057 次 |
| 最近记录: |