在Android中重新渲染onRestart方法中的Activity

时间:2013-12-30 21:12:44

标签: android sqlite intellij-idea

一点点细节:

我正在使用IntelliJ IDEA SQLite Database Viewer连接到已安装且正在运行的应用数据库,并检索架构和数据以在IDE上显示它们。它还允许您将您在其上所做的更改上传回设备或模拟器。 此信息与我想要的内容并不完全相关,但它是关于我从哪里得到这个问题的旁注。

问题:

因此,当我进行此类更改时,我需要从 最近活动 中删除我的应用程序的任何实例,以便完全重新启动它,以便可以进行新的更改反映到UI。 在您按住主页按钮几秒钟后,会显示近期活动。

我想要的是什么:

但我想要做的是,不是删除我的应用程序的任何实例以查看数据库中的新更改,我想使整个视图无效,以便它呈现自身并调用所有与数据库相关的方法获取最新数据。

我的解决方案:

我对如何实现这一点的想法是这样的:

当我说,点击手机上的主页按钮并重新打开应用程序,然后Android操作系统完全销毁它,我想Android会从onRestart()方法重新运行它而不是{ {1}}此处所述的方法:http://developer.android.com/training/basics/activity-lifecycle/stopping.html但我可能错了。因此,如果我在onCreate()方法中加入一些逻辑来强制活动重新呈现新数据,那么我就能达到目标。

但是为了降低生产中的性能,我想从onRestart()文件中读取属性android:debuggable="true"属性,并在它处于true状态时执行此重新呈现。因此,当我发布应用时,我可以轻松将其切换为AndroidManifest.xml以获得更好的效果。

我愿意接受新的解决方案。

我的问题:

我的问题是,如果有人能告诉我这个问题是否正确,如果是的话,我应该在false方法中添加什么样的代码才能使数据库数据发生变化反映到UI?

1 个答案:

答案 0 :(得分:1)

我有同样的问题。我找到了两种解决方法:

1。启动该活动时,将以下内容添加到意图中:

    intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

但这意味着即使显示对话框并且用户点击后退按钮,也不会重新启动活动。

2. 将此添加到该活动的清单中:

    android:finishOnTaskLaunch="true"

这适合我想要的。

OP的评论:

我觉得有必要将此评论添加到我标记的答案中。第二个选项并没有完全解决我的问题,但仍然帮助了我。如果您使用的是IntelliJ IDEA,则Shift + F10会将您的应用程序重新安装到设备上。这个快捷方式和第二个选项的组合将解决问题。