如何在BlackBerry中使用UiApplication.activate()

如何在BlackBerry中使用UiApplication.activate(),blackberry,Blackberry,我想在BlackBerry中使用UiApplication.activate()方法。在Android中,我们使用onResume()方法;那么我们如何在BlackBerry中使用UiApplication.activate()方法呢 没有那么多可用的信息 关于activate(),没有什么真正需要知道的。如果你看一下文档 它说: “系统将此应用程序置于前台时调用此方法。” 因此,如果您的应用程序已被推送到后台(例如,通过电话),然后用户单击您的图标再次查看您的应用程序,则将调用activat

我想在BlackBerry中使用
UiApplication.activate()
方法。在Android中,我们使用
onResume()
方法;那么我们如何在BlackBerry中使用
UiApplication.activate()
方法呢


没有那么多可用的信息

关于activate(),没有什么真正需要知道的。如果你看一下文档

它说: “系统将此应用程序置于前台时调用此方法。”

因此,如果您的应用程序已被推送到后台(例如,通过电话),然后用户单击您的图标再次查看您的应用程序,则将调用activate()。相反,当系统将应用程序推送到后台时(例如,当接到电话时),将调用deactivate()

请注意,在应用程序首次启动时也会调用activate()

真正的问题是,在onResume()中,您需要在BlackBerry代码中复制哪些内容。如果你能告诉我们这一点,我们可能会建议什么是实现你想要的结果的最佳方式

更新

鉴于您似乎正在使用onResume()更新Ui,不幸的是,没有一种简单的方法可以对整个应用程序进行更新。您将使用的方法实际上取决于正在更新的内容

但请注意,大多数字段在更改其内容时会自动更新。举一个简单的例子,如果您有一个包含数据的EditField,并且您使用 .setText(“新数据”); 方法,这将自动为您在屏幕上重新绘制该字段

我希望您有一个从数据库或数据源填充的屏幕,并在activate()中刷新此数据。因此,您必须遍历屏幕的每个字段,并使用关联的集合。。。方法更新内容

这是有点问题的,因为activate是为应用程序而不是屏幕调用的,而且堆栈上可能有多个屏幕,您确实需要更新所有屏幕。有多种方法可以做到这一点,例如,您的屏幕注册自己以进行更新,或者您的activate()方法在显示堆栈中搜索屏幕

但一个简单的方法可能是使用每个屏幕的“onExposed()”方法自动更新内容。这个方法在屏幕被隐藏然后显示的任何时候都会被调用,这正是应用程序被前景化后会发生的事情。当屏幕被另一个屏幕隐藏时,甚至当用户按下菜单键时,也会发生这种情况。因此,如果更新非常耗时(例如需要数据库查找),您可能不希望每次调用onExposed()时都进行更新,而是尝试限制更新频率

这种“onExposed()”方法不需要单独更新每个字段的内容,但它可能会使实现更容易

进一步更新

注意Nate的回答,Nate有Android和BB的经验,因此可以更好地解决您的问题

但是,如果您知道屏幕已经更新,因此您刚刚处理了一个与屏幕内容相关的网络请求,那么您应该逐个检查每个字段,在此时“设置”更新的值,不要担心使用OneExposed()。一种适应这种情况的设计方法是将屏幕结构与屏幕总体分开,这样您就可以从多个位置调用“总体”(请注意,更新字段时您确实需要处于事件线程上)


但是在这种情况下,您可能会发现创建一个新屏幕并按下该屏幕并弹出旧屏幕(具有旧值)更容易、更快

关于activate(),没有什么真正需要知道的。如果你看一下文档

它说: “系统将此应用程序置于前台时调用此方法。”

因此,如果您的应用程序已被推送到后台(例如,通过电话),然后用户单击您的图标再次查看您的应用程序,则将调用activate()。相反,当系统将应用程序推送到后台时(例如,当接到电话时),将调用deactivate()

请注意,在应用程序首次启动时也会调用activate()

真正的问题是,在onResume()中,您需要在BlackBerry代码中复制哪些内容。如果你能告诉我们这一点,我们可能会建议什么是实现你想要的结果的最佳方式

更新

鉴于您似乎正在使用onResume()更新Ui,不幸的是,没有一种简单的方法可以对整个应用程序进行更新。您将使用的方法实际上取决于正在更新的内容

但请注意,大多数字段在更改其内容时会自动更新。举一个简单的例子,如果您有一个包含数据的EditField,并且您使用 .setText(“新数据”); 方法,这将自动为您在屏幕上重新绘制该字段

我希望您有一个从数据库或数据源填充的屏幕,并在activate()中刷新此数据。因此,您必须遍历屏幕的每个字段,并使用关联的集合。。。方法更新内容

这是有点问题的,因为activate是为应用程序而不是屏幕调用的,而且堆栈上可能有多个屏幕,您确实需要更新所有屏幕。有多种方法可以做到这一点,例如,您的屏幕注册自己以进行更新,或者您的activate()方法在显示堆栈中搜索屏幕

但也可能是一个s