【问题标题】:Suspending all threads when using GifTextView on AsyncTask?在 AsyncTask 上使用 GifTextView 时暂停所有线程?
【发布时间】:2016-12-28 05:04:49
【问题描述】:

我正在尝试将GifTextView 用于我的动画。这个AsyncTask 确实有效,但是当我使用GifTextView 时需要很长时间。如果从该代码中删除 GifTextViewAsyncTask 工作得很快。

public class PDFCreate extends AsyncTask<String,String,String> {
    @Override
    protected String doInBackground(String... strings) {
        String FILE = Environment.getExternalStorageDirectory().toString()
                +"/TEST/PDF/"+Ex_date+".pdf";
        try {
                Document document = new Document(PageSize.A4);
                String root = Environment.getExternalStorageDirectory().toString();
                File myDir = new File(root + "/TEST/PDF");
                myDir.mkdirs();

                    PdfWriter.getInstance(document, new FileOutputStream(FILE));

                document.open();
                addMetaData(document,"LEAKS");
                addTitlePage(document,Ex_title);
                document.close();
        } catch (DocumentException e) {
            FILE = "Error Create Document";
        } catch (FileNotFoundException e) {
            FILE = "Cannot Create Document Path";
        }
        return FILE;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        GifTextView git = (GifTextView) findViewById(R.id.loading_gift);
        git.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onPostExecute(String st) {
        super.onPostExecute(st);
        git.setVisibility(View.GONE);
        ViewDialog alert = new ViewDialog();
        alert.showDialog(detail.this,"File have been saved on : \n" + st);
    }
}

我的问题是,如何使用GifTextView 而不减慢我的程序?

【问题讨论】:

  • 尝试为 AsyncTask 类使用 Contructor 并将一些对象初始化的代码从 preexecute 和 doinbackground 方法中删除,然后再试一次,让我知道
  • 再清楚一点。
  • @EthicsDev 你能给我举个关于构造函数的例子吗?其实我很困惑。关于你说的。因为 GifTextView 只是显示。什么都做不了。
  • 转到此链接:gist.github.com/anonymous/97b8a90702c3858db203502670c9dd9e 并检查我是否在构造函数中放入了一些代码以进行初始化。让我知道它对你有帮助吗。 @AKCode
  • @EthicsDev 还是一样。在日志上 cat 仍然显示“暂停所有线程”并得到这么长时间的结果。如果我用 Textview 改变。出结果的时间不长。这让我很困惑。实际上 GifTextView 只是加载动画。

标签: android multithreading performance android-asynctask


【解决方案1】:

EthicsDev 好的,谢谢兄弟。最后我使用 Glide 来加快我的 AsyncTask。删除GifTextView

      ImageView imageView = (ImageView) findViewById(R.id.loading_gift);
        GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
        Glide.with(leaks_detail.this).load(R.drawable.loading).override(200,200)
                .into(imageViewTarget);

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2013-08-19
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多