在android服务中,我创建了一些用于执行某些后台任务的线程.
我有一种情况,线程需要在主线程的消息队列上发布某些任务,例如a Runnable.
有没有办法获得Handler主线程并从我的其他线程发布Message/ Runnable到它?
谢谢,
这是在一次Android采访中被问到的.我被问到是否可以从异步任务1的doInBackground()方法启动另一个异步任务(让它成为Task2)(让它成为Task1).我已经阅读了以下文档:
必须在UI线程上创建任务实例.
必须在UI线程上调用execute(Params ...).
根据这些陈述,我认为不应该从另一个任务的后台方法启动任务.此外,异步任务有UI方法(不能在后台线程上使用),所以加强了我的论点,我回答它是不可能的.
在检查一个简单的演示应用程序时,我看到它确实可以这样做.一些演示代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
init();
Log.v ("gaurav", "Thread is : " + Thread.currentThread().getName());
Task1 task = new Task1();
task.execute();
}
class Task1 extends AsyncTask {
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
Log.v ("gaurav", "Thread task 1 is : " + Thread.currentThread().getName());
Task2 task = new Task2();
task.execute();
return null;
}
}
class Task2 extends AsyncTask {
@Override
protected Object doInBackground(Object... params) { …Run Code Online (Sandbox Code Playgroud)