我在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);
}
这是正确的方法吗?
答案 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
,这将自动在工作线程中完成。