我一直想知道如何正确地做这件事。
我希望从主线程之外的其他地方显示对话框或Toast(或任何图形)。
但为此我需要传递一个Context。
强力方式是要么一直传递上下文,要么创建一个静态变量来存储上下文。
那些工作但不是可行的方式,所以有人可以告诉我完成这个的正确方法:
ProgressDialog.show([...], "",[...].getResources().getString( R.string.logoutProgressMessage), true);
答案 0 :(得分:2)
您正在寻找的是runOnUiThread。这应该会让事情变得容易多了。 :)
对于主线程中的其他类,请尝试getApplicationContext。我已经将其他类和服务用于Toasts。例如:
Context context = getApplicationContext();
Toast toast = Toast.makeText(上下文,“您的计时器已过期”,Toast.LENGTH_LONG);
toast.show();
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用静态字段来存储应用程序的Context
(通过方法getApplicationContext()
获得),这不会导致内存泄漏。
您可以在this question
中找到实现此解决方案的代码示例