在MainActivity中启动可运行对象

时间:2019-07-11 10:00:42

标签: java android multithreading

我在audioService.java中有一个可运行对象,它可以执行某些任务。服务中的可运行对象,而我在服务中启动了可运行对象。

AudioService.java

@Override
public int onStartCommand(Intent intent, int flags, int startId){
    new Thread(new audioRunnable()).start(); //starting the thread
    return super.onStartCommand(intent, flags, startId);
}

@Override
public class audioRunnable implements Runnable {
    @Override
        public void run() {
      // task has been carried out
  }
}

我这样在MainActivity中启动服务

@Override
Protected void onCreate(){
    Intent intent = new Intent(MainActivity.this, audioService.class);
    startService(intent);
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

您无需致电runOnUiThread(),只需执行:

Intent intent = new Intent(MainActivity.this, audioService.class);
startService(intent);

在按钮上设置的OnClickListener#onClick内。

这将启动服务,并且在服务内部您已经创建了一个新线程(非ui线程)来执行// task has been carried out

顺便说一句,考虑使用IntentService并覆盖onHandleIntent,然后使用此方法执行// task has been carried out,这将自动在工作线程中完成。