当前位置: 首页 > 知识库问答 >
问题:

进度对话框:Android.View.WindowLeaked:已泄漏最初在此处添加的Windows DecorView@6995336[]

公良鸿禧
2023-03-14

私有类LoadOrdersListAgent扩展AsyncTask{

    @Override
    protected void onPreExecute() {
        dialog = new ProgressDialog(OrdersActivity.this);
        ordersList = new ArrayList<>();
        rvor = findViewById(R.id.recycler_view_orders_agent);
        emptytv = findViewById(R.id.empty_view_orders_agent);
        emptytv.setVisibility(View.GONE);
        rvor.setHasFixedSize(true);
        rvor.setLayoutManager(new LinearLayoutManager(OrdersActivity.this));
        rvor.setItemAnimator(new DefaultItemAnimator());

        dialog.setMessage("Loading....");
        dialog.show();
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        final OrdersAdapter adapter = new OrdersAdapter(getApplicationContext(), ordersList);
        rvor.setAdapter(adapter);
        rvor.setLayoutManager(new LinearLayoutManager(OrdersActivity.this));
        srl.setRefreshing(false);

        if (dialog.isShowing()) {
            dialog.dismiss();
        }

        if (ordersList.isEmpty()) {
            Log.d("TESTING.....", "LIST OF ORDERS ----->" + ordersList);
            rvor.setVisibility(View.GONE);
            srl.setVisibility(View.GONE);
            emptytv.setVisibility(View.VISIBLE);
        } else {
            rvor.setVisibility(View.VISIBLE);
            srl.setVisibility(View.VISIBLE);
            emptytv.setVisibility(View.GONE);
        }
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected Void doInBackground(Void... voids) {
        ordersList = OrdersApi.getOrders(url, key);
        return null;
    }
}

private void swipeOrderLayout() {
    srl = findViewById(R.id.swipe);

    srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            if (new CheckNetworkUtil(OrdersActivity.this).isNetworkAvailable()) {
                new LoadOrdersListAgent().execute();

//new LoadOrdersListAdmin().Execute();}其他toast.maketext(OrdersActivity.this,“no Internet connection!”,toast.length_short).show();srl.setrefreshing(false);}});}

共有1个答案

养聪
2023-03-14

当我在完成/销毁活动时没有忽略进度对话时,我得到了这个错误。

解决方案使用dialog.dismiss();在销毁或暂停活动之前取消进度对话

在您的示例中,删除if条件,只需在postExecute方法中调用Dialog.Dismiss();

 类似资料:
  • 我正在为长时间运行的任务使用IntentService, ResultRecencer机制,并在IntentService运行期间在我的活动中显示进度对话框。当任务在intentService中完成时,我将适当的结果代码发送到onReceiveResult中的活动,并相应地关闭进度对话框。一切正常,除非设备方向发生变化,在此期间,应用程序在活动破坏时崩溃,Intent服务尝试将结果代码发送到已销毁

  • 问题内容: 我正在尝试制作一个可以帮助我评估从Web资源下载文件的时间的应用程序。我发现了2个样本: 使用Android下载文件,并在ProgressDialog中显示进度 和 http://www.helloandroid.com/tutorials/how-download-fileimage-url- 您的设备 第二个示例显示了较小的下载时间,但是我不明白如何使用它来更新进度对话框。我认为在

  • 问题内容: 我是android开发的新手。我想在我的应用程序中使用开发一个。当我单击“搜索”按钮时,应当与一起出现,表明在切换到另一个按钮之前进度一直在进行。请给我推荐示例代码。 问题答案: 使用。不过,您应该在new上进行工作,并在完成时使用a 回调到。这是我的方法:

  • 我已经使用进度条来指示页面正在android WebView中加载。但是进度条会永远显示,即使页面已经完全加载。我使用logcat进行调试,它显示调用了onPageFinished函数。

  • 问题内容: 加载Web视图后,我需要什么代码来创建对话框? 我试过了 没用 问题答案: :o webview.setWebViewClient(new homeClient()); homeClient() ???? 试试这个 更新:: 这是一个很好的例子。 Android WebView和不确定性进度解决方案