WindowManager removeView抛出“硬件加速......”异常

时间:2013-03-02 22:11:47

标签: java android exception

我有以下代码:

protected View progressView;
protected LayoutParams progressParams;

class Task extends AsyncTask<String, Void, Result> {
    String timeleft;
    String error;

    @Override
    protected Result doInBackground(String... s) {          
        // ...
    }

    @Override
    public void onPreExecute() {
        getWindowManager().addView(progressView, progressParams);
    }

    @Override
    protected void onPostExecute(Result result) {           
        getWindowManager().removeView(progressView); // throws exception
        // ...
    }
}

我的手机上有这个错误(不在模拟器中)。也许是因为我使用来自tyween的HTC HD2 Android ROM,其中有很多东西已经启用并且“生活在边缘”。

03-02 22:53:08.303: E/test(5573): Exception: Hardware acceleration can only be used with a single UI thread.
03-02 22:53:08.303: E/test(5573): Original thread: Thread[main,5,main]
03-02 22:53:08.303: E/test(5573): Current thread: Thread[background thread,5,main]

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

通过在清单中的应用程序标记中放置android:hardwareAccelerated =“false”可以避免此问题。但它当然没有解决问题。

答案 1 :(得分:0)

尝试在UI线程中添加视图。