【问题标题】:How to avoid black screen when returning back from on activity result?从活动结果返回时如何避免黑屏?
【发布时间】:2019-08-02 06:16:18
【问题描述】:

在我的应用程序中,我使用存储访问框架在 sd 卡上写入文件。 为此,我正在打开文档树的意图并在活动结果内部 我正在接收 sd 卡路径的文档 URI。

返回活动结果后,我得到了这个文档 URI,然后我正在执行一项巨大的任务,该任务以黑屏结束,因为 UI 线程上的负载很大。 这个黑屏会出现 7 到 8 秒。

我确实通过使用异步任务解决了黑屏问题,但由于异步任务仍然会出现其他问题。 不是出现黑屏活动屏幕,但在返回活动屏幕时,UI 进度加载器出现跳帧问题,在预执行异步任务时,UI 加载器跳帧 2 秒,然后工作正常。我想减少跳帧以及在后台方法中执行的异步任务我已经转移了这个超过时间限制并在大约 1 分钟内结束的巨大任务。在没有异步任务的情况下,黑屏的巨大任务在主线程上几乎花费了 8 秒。

黑屏代码

      Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);                         

intent.putExtra("android.content.extra.SHOW_ADVANCED", true);                              

    intent.putExtra("android.content.extra.SHOW_FILESIZE", true);

       startActivityForResult(intent, 77);

在活动结果中执行一项巨大的任务

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == Activity.RESULT_OK) {
            sdCardUri = data.getData();
            if(requestCode == 77) {


                documentFile = DocumentFile.fromTreeUri(this, sdCardUri);

 //.... HERE ALOT OF TASK IS BEING PERFORMED AND AS IT IS RETURNING BACK TO ACTIVITY THE MAIN THREAD ENDS IN BLACK SCREEN .....
  HugeTaskPerformed(documentFile);

            }

使用异步任务后

 if (resultCode == Activity.RESULT_OK) {
            sdCardUri = data.getData();
            if(requestCode == 77) {

              documentFile = DocumentFile.fromTreeUri(this, sdCardUri);              
         // instead of huge task performing async task here
      new MainActivity.BackgroundHugeTask(context).execute();


            }


}

我应该如何让异步在后台工作更快,并且在预执行加载程序时跳过 2 秒然后相应地工作是一团糟我可以做些什么来尽可能减少它们?

不能给你完整的代码,但给你一个我卡在哪里的示例。

【问题讨论】:

    标签: android android-asynctask fullscreen onactivityresult


    【解决方案1】:

    如果不查看完整代码很难说,但此链接 https://stackoverflow.com/a/12850190/11560232 可能会回答为什么 AsyncTask 非常慢。如果数据很大,在主线程上运行会使加载速度变慢,您可能想尝试 (runOnUiThread())

    【讨论】:

    • 主线程UI由于计算量大而显示黑屏,计算是根据我的应用程序搜索所有目录并查找文件,并且在移动这个现在处于异步背景的计算之后现在完成进一步的计算方法耗时 10 倍以上,有什么方法可以让计算在异步后台快速运行。
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2013-02-16
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多