小编Kur*_*ngu的帖子

使用Listener完成AsyncTask时的触发事件

我对如何使用Listeners在类和活动之间传递信息感到困惑.

方案是这样的:
我有一个任务,从Sqlite数据库读取数据,并将此数据放入一个ArrayList,传递给适配器,然后在屏幕上显示它.

问题:
当我尝试使用值更新侦听器接口时,我的应用程序崩溃了.它没有在logcat中显示任何内容......它只是挂起应用程序.有人可以指出我哪里出错了.- 谢谢

细节:
我通过一个名为DatbaseRoutines的类完成数据库处理,并在其中执行繁重的内部方法.该方法使用AsyncTask,以免占用主线程.

我用单一方法创建和接口

 public interface DatabaseProcessListener {
  public void ProcessingIsDone(boolean blnProcessIsFinished);
} 
Run Code Online (Sandbox Code Playgroud)

在我的DatabaseRoutines类中,我正在创建一个私有变量

private DatabaseProcessListener dbProcesslistener;
Run Code Online (Sandbox Code Playgroud)

以及它的二传手

   public void setDbProcesslistener(DatabaseProcessListener dbProcesslistener) {
    this.dbProcesslistener = dbProcesslistener;
    }
Run Code Online (Sandbox Code Playgroud)

处理完成后,我使用PostExecute方法更新监听器,以便这可以将监听器中的值更改为True(即完成db处理)下面是代码

            protected void onPostExecute(Boolean aBoolean) {
                super.onPostExecute(aBoolean);
                dialog.dismiss(); //i have progress dialog during processing and its                        
                //closed here

                if (blnUpdateSucceededStatus) 
                 {
                     dbProcesslistener.ProcessingIsDone(true);
                  } 
                   else 
                  {
                    Toast.makeText(ctx, "Transactions Processing   
                     failed",Toast.LENGTH_SHORT);
                   } ;
Run Code Online (Sandbox Code Playgroud)

最后,在显示从数据库收集的数据的活动中,我实现了监听器.见下文.

public class MyActivity extends Activity implements DatabaseProcessListener 
{

@Override
public void ProcessingIsDone(boolean blnProcessIsFinished) {
    if(blnProcessIsFinished){
        PopulateExpandableListView(); …
Run Code Online (Sandbox Code Playgroud)

android listener android-asynctask

5
推荐指数
1
解决办法
8622
查看次数

Android Studio 2.1.2定期使用高达100%的磁盘超过2分钟

我有一台带有32GB Ram,8个3.2gz核心和4个驱动器的dell alienware pc,其中Drive C:是一个SSD.笔记本电脑的主要功能是android编码.

通常没有警告,Studio将完全没有响应,鼠标点击等都会被忽略.在此期间Drive D:磁盘利用率为100%.磁盘为100% - 这不是SSD驱动器只是一个普通的旋转驱动器

请注意,这甚至不是在应用程序构建或在设备上运行时,只是在应用程序中定期标记或突出显示代码块.我有这个屏幕截图.

我搜索了几周并更新了我的SSD驱动程序到最新的,我删除了Windows预取,停止了Windows搜索索引器等但没有任何作用.这也只发生在Android工作室,我没有看到任何其他应用程序.在此输入图像描述

有没有人有这个问题,有没有解决方案?

android

5
推荐指数
2
解决办法
3291
查看次数

标签 统计

android ×2

android-asynctask ×1

listener ×1