获取应用程序上下文以显示图形组件

时间:2011-07-12 23:41:01

标签: android jquery dialog toast android-context

我一直想知道如何正确地做这件事。

我希望从主线程之外的其他地方显示对话框或Toast(或任何图形)。

但为此我需要传递一个Context。

强力方式是要么一直传递上下文,要么创建一个静态变量来存储上下文。

那些工作但不是可行的方式,所以有人可以告诉我完成这个的正确方法:

ProgressDialog.show([...], "",[...].getResources().getString( R.string.logoutProgressMessage), true);

3 个答案:

答案 0 :(得分:2)

您正在寻找的是runOnUiThread。这应该会让事情变得容易多了。 :)

对于主线程中的其他类,请尝试getApplicationContext。我已经将其他类和服务用于Toasts。例如:

  

Context context = getApplicationContext();
  Toast toast = Toast.makeText(上下文,“您的计时器已过期”,Toast.LENGTH_LONG);
  toast.show();

答案 1 :(得分:1)

在主线程中创建Handler并让后台线程使用它发布到您的UI线程可能是最合适的解决方案。

真的尝试来保留对Context的静态引用,因为这是一个很大的leak

答案 2 :(得分:0)

您可以使用静态字段来存储应用程序的Context(通过方法getApplicationContext()获得),这不会导致内存泄漏。

您可以在this question

中找到实现此解决方案的代码示例