【问题标题】:Android: Asynch Thread Needed?Android:需要异步线程?
【发布时间】:2013-02-05 23:53:30
【问题描述】:

我正在创建一个应用程序,该应用程序涉及从 Assets 文件夹中的文本文件中读取数据。对于每个文件,它将数据存储在单独的ArrayList 中。这些文件在活动的onCreate()方法中一个接一个地读取。所有文本文件加起来总共 1.8 MB,在模拟器上,加载活动当前需要 12 秒。该应用程序不会在模拟器上崩溃(只需大约 12 秒)。

我读过关于异步线程的文章,但过去我从未需要过它们。我正计划使用某种消息或进度条来通知用户活动实际上正在加载并且没有崩溃。

所以我的问题是:即使应用程序在加载活动时没有崩溃,我还是应该将文件的读取放在异步或不同的线程上吗?如果是这样,我将如何正确地做到这一点? (我以前从未这样做过。)

这是读取文本文件的示例代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);

    populateArrayLists();

}

public void populateArrayLists() {
    BufferedReader br = null;
    try {
        br = new BufferedReader(new InputStreamReader(getAssets().open(
                "text1.txt")));
        String text;
        while ((word = br.readLine()) != null) {
            ArrayList1.add(text);
        }                           
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            br.close(); // stop reading
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }


    br = null;
    try {
        br = new BufferedReader(new InputStreamReader(getAssets().open(
                "text2.txt")));

    // the same process is duplicated for 1-15
    // it may not be the best or most efficient way but it works

任何帮助将不胜感激。

【问题讨论】:

    标签: android android-asynctask android-activity


    【解决方案1】:

    是的,您需要一个后台线程。 Loader api 可能是您最容易的选择。

    这将允许您至少在文件加载时显示通知并提供一些内容。如果您正在这样做,甚至可以加载它们并逐步显示数据。

    编辑:加载程序是compatibility library 中提供的 3.0 功能。如果您不愿意添加依赖项,您可以随时退回到AsyncTask,在这种情况下您可以查看this。

    【讨论】:

    • 如果可能的话,你愿意帮助我开始(把它与我所拥有的东西联系起来)吗?
    • 我有一段时间没做Android了,所以我真的不能花时间写代码(需要大量的重新学习),但是欢迎你开始一个聊天室和我在一起,我会尽力帮助你
    • 好的。实际上,我已经专门为我的尝试提出了另一个问题(请参阅我的链接问题)。随意看看我的尝试(也许它会激发一些东西?)并提出您的意见。
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2023-04-10
    相关资源
    最近更新 更多