【问题标题】:how to get reference to the current window from async task? Android如何从异步任务中获取对当前窗口的引用?安卓
【发布时间】:2011-05-05 09:01:15
【问题描述】:

在我的应用程序中,我使用标签,它有设置、主页等标签。在设置页面中有一个带有一些文本的文本视图。在主页中有一个在后台运行的异步任务。

现在我想要的是,当用户正在观看设置页面时,如果来自 home.java 类的异步任务完成了 doInBackground 方法,我想更新设置页面中的文本视图。

如何在 home.class 中异步任务的 onPostExecute 方法中获取设置页面的 textview 的引用?请提供一些线索或方法来实现这一点..

谢谢你..

【问题讨论】:

    标签: android user-interface window


    【解决方案1】:

    您不应尝试直接从 AsyncTask 的 onPostExecute() 方法访问 TextView。而是暂时将您要设置到 TextView 的值集中存储在某个地方,并在访问设置页面时从那里检索它。

    要存储值,您可以使用不同的机制。如果您不需要持久化它,您可以使用可以从应用程序中的任何位置访问的单例类。要持久保存值,您应该使用shared preferences、文件或数据库。

    查看this page 了解更多信息。

    【讨论】:

    • 我希望在用户位于设置页面本身时动态更新文本视图(在 doInBackground 完成后)..
    • 我可以在 settings.class 中放置一个线程来每隔一定时间更新字段。但我不想那样......我想从另一个类(home.java)访问文本视图是否可能? getCurrentFocus 之类的东西。
    • @manidhar mulaparthi:“我想从另一个类(home.java)访问文本视图,这可能吗?” ——这不是一个好主意。请遵循@Flo 提供的建议。
    • 谢谢,但我已经在使用数据库来存储该值并通过检索该值来显示文本视图。如果我重新进入设置页面,它会更新。但我想要的是动态属性。我不希望用户重新进入设置页面来获取更新的文本视图..
    • 实现某种observer pattern,当值更新时通知您的设置活动。因此,您需要一个组件(例如单例类),用于更新数据库中的值,然后通知注册到它的侦听器有关更新的信息。您的设置活动就是这样的监听器。通过这种方式,您的设置活动会收到有关新值的通知,并且可以检索它并更新 UI。因为只有在您的活动可见时通知才有意义,它应该在 onResume() 中注册并在 onPause() 中取消注册。
    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多