【问题标题】:Thread in Java/AndroidJava/Android 中的线程
【发布时间】:2010-10-11 22:30:51
【问题描述】:

您好。

当用户按下显示屏上的按钮时,如何将两个参数发送到一个线程并运行方法。让我的变量在 UI 线程中不起作用,并在 UI 线程随机重新启动时被删除。

UI 线程 ______________ 其他线程

用户按下按钮------->运行方法

干杯。

【问题讨论】:

  • 如果您需要在单个 Activity 实例的生命周期之外保留一些东西,您可能需要考虑使用 Service:developer.android.com/reference/android/app/Service.html
  • 如果我有一个对象并且我将值放入其中并且屏幕方向发生变化,我会丢失该对象并且它变为空。我需要不要发生这种情况。我可以通过服务做到这一点吗?

标签: java android multithreading


【解决方案1】:

我认为你应该为你的按钮定义监听器。反过来,这些侦听器应该使用您想要的参数启动线程,以执行其他任务,同时保持 UI 可用并再次对用户负责,同时执行这些线程。 你需要这样的东西:

public void onClick(View v) {
  new Thread(new Runnable() {
    public void run() {
      Bitmap b = loadImageFromNetwork();
      mImageView.setImageBitmap(b);
    }
  }).start();
}

此示例取自Android Developers Blog,您可以在其中获得其他有用的信息和提示。

【讨论】:

  • 这不起作用,因为当屏幕方向改变时,变量仍然会被清空。
  • 您没有在帖子中提及屏幕方向更改。这还不是我处理过的事情,但最终,如果在屏幕方向改变时调用某个方法,您可以使用它来保存重要变量和/或在需要时将储物柜应用于线程使用的对象暂时停止他们的活动,或向他们发出改变的信号。
  • 为什么用 run() 而不是 start()?
  • 因为 Thread 的 start() 方法会初始化 Thread 的必要资源,然后执行它的 run() 方法。
【解决方案2】:

看看这个blog article。它描述了如何保持线程在屏幕旋转中工作。

【讨论】:

    猜你喜欢
    • 2015-02-02
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2010-11-02
    • 2014-10-09
    相关资源
    最近更新 更多