java - Android - 从后台线程返回 ArrayList 到 Activity

标签 java android arraylist thread-safety

我有一个名为 BuildingActivity 的 Activity 延伸 ListActivity .

onCreate()方法,我在后台线程中运行 7 个数据库查询。在那个后台线程中,我正在构建一个 ArrayList<String>查询返回的数据中的对象。

现在,我想归还那个 ArrayList<String>对象回到我的BuildingActivity线程。

这是我正在处理的部分代码:

    public class BuildingActivity extends ListActivity {

        private ProgressBar mProgressBar;

        public ArrayList<String> buildings;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_building);

            new Thread(new Runnable() {

                @Override
                public void run() {
                    ArrayList<String> list;

                    DataSource dbSource = new DataSource(getApplicationContext());
                    dbSource.open();

                    list = dbSource.getBuildingsList();

                    dbSource.close();

                    //*** NOW HOW DO I PASS list BACK TO onCreate()?
                    //*** I WANT TO MAKE buildings = list.

                }

            }).start();

            if(!buildings.isEmpty()) {
            // do Something.
            // If i do buildings = list in the background thread, 
            // This will always be executed because the background thread can take 
            // some time to return the data. How do i make sure this part of 
            // code is executed only after the data has been returned?
        }
        }   
    }

此后我的目标是根据返回的建筑物列表创建一个列表。单击建筑物后,将打开另一个 Activity 。我该如何解决这个问题?

谢谢!

最佳答案

How do i make sure this part of code is executed only after the data has been returned?

不要使用 Thread 在后台执行任务,而是使用 AsyncTask它提供用于在后台执行操作的doInBackground 和完成后台任务后在 UI 线程上运行的 onPostExecute 方法

关于java - Android - 从后台线程返回 ArrayList 到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447711/

相关文章:

条件空检查时的 Java NullPointerException

java - 为什么在配置文件中定义类时需要@Entity注解

java mail - 通过邮件 ID 获取邮件

android - XMPP aSmack - 如何获取当前用户状态(离线/在线/离开/等)?

java - 使用驼峰分割器分割列表列表

android - 如何按日期和时间对 jsonarray 数据进行排序并放入 ListView 适配器

Java:使用值删除 ArrayList 中的元素

Java流——查找唯一元素

java - 将键和值添加到优先级队列中并在 Java 中按键排序

android - 立即退出整个应用程序