首页 > 解决方案 > 我如何知道后台线程何时完成 AsyncTask?

问题描述

我使用带有背景线程的字符串获取人员的姓名和电话号码,并在某处使用它们。一切正常,但我想做点什么。当这个线程用完时,我想向用户展示一些东西。但我不知道如何检查这个线程的状况。如果您提供帮助,我将不胜感激。提前致谢。

cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,
                ContactsContract.Contacts.DISPLAY_NAME + " ASC");

        AsyncTask.execute(new Runnable() {
            @Override
            public void run() {

                while (cursor.moveToNext()){

                    String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).trim();

                }
                cursor.close();
            }
        });
    }

标签: javaandroidandroid-asynctask

解决方案


我想这就是你的意思

    final TextView textView1 = findViewById(R.id.sample_text);
    final Handler uiHandler = new Handler(Looper.getMainLooper());
    AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            //... your work
            uiHandler.post(new Runnable() {
                @Override
                public void run() {
                    textView1.setText("finish");
                }
            });
        }
    });

推荐阅读