在我的应用程序 MainActivity 中,有一个工作正常的线程。但是当我调用另一个类从服务器获取数据时,我无法在线程上运行。请参阅下面的代码示例。
class MainActivity extends Activity implements Runnable {
public void onCreate() {
new Thread(this).start();
}
public void run() {
//here is code for download data from server after completion this and in handler i m call other class in setdata() method....
}
public void setData() {
new CheckData(this);
}
}
class CheckData {
public CheckData(Context context) {
context.runUIonthread(){//cant call as runUIthread............
}
}
最佳答案
见文章Communicating with the UI Thread .
有了Context
,你可以在任何类中创建一个Handler
。否则,您可以调用 Looper.getMainLooper()
,无论哪种方式,您都可以获得主 UI 线程。
例如:
class CheckData{
private final Handler handler;
public Checkdata(Context context){
handler = new Handler(context.getMainLooper());
}
public void someMethod() {
// Do work
runOnUiThread(new Runnable() {
@Override
public void run() {
// Code to run on UI thread
}
});
}
private void runOnUiThread(Runnable r) {
handler.post(r);
}
}
关于Android如何在其他类中运行OnUiThread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860384/