【问题标题】:How do I implement multi thread on an Android Activity?如何在 Android Activity 上实现多线程?
【发布时间】:2018-07-26 09:23:55
【问题描述】:

我在我的 Activity 中创建了一个嵌套类

public class MissionsActivity extends Activity {

class UpdateMissions implements Runnable {

    @Override
    public void run() {
      android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
        [...]
}

   [...]
}

在线程中,我必须读取一个文件并在布局中更新一些TextFields。我尝试使用读取和更新字段的while(true) 来实现run() 方法,但是当我启动Activity 时应用程序会崩溃。

更新:我在 UI Activity 的 onCreate() 方法中调用了 execute() 方法。任务仅在我第一次进入活动时工作,如果我更改并返回它不会做任何事情。

【问题讨论】:

    标签: android multithreading android-activity


    【解决方案1】:

    嘿,一个解决方案可能是尝试使用 Java 的 Executor Framework。将以下代码放入您的活动中。

    对于执行者,您可以使用 cachedThreadPool() singleThreadExecutor() fixedThreadPoolExecutor(int numOfThreads) 等。

    Executors.newSingleThreadExecutor().submit(new Runnable() {
            @Override
            public void run() {
                //Your task here.
            }
        });
    

    请注意,Android 中有许多线程模型和技术,有些是特定于 Android 的,有些是基于 Android 的。

    AsyncTask

    HandlerThread

    【讨论】:

      【解决方案2】:

      您可以使用 AsyncTask。它允许您加载文件并在 ui 线程上显示进度,直到加载完成。

      这里有一个很好的例子Download a file with Android, and showing the progress in a ProgressDialog

      如果您在开发方面更先进,我建议您使用 RxJava 或 Live Data,但第一个解决方案也足够适合开始 https://developer.android.com/topic/libraries/architecture/livedata.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        相关资源
        最近更新 更多