【问题标题】:share a database between an app and a widget在应用程序和小部件之间共享数据库
【发布时间】:2016-04-04 17:39:09
【问题描述】:

我开发了一个应用程序:

  • 在 sqlite db 中插入一些数据的按钮
  • 显示和更新 sqlite 数据库记录的一些视图

现在我想编写一个简单的小部件,它只执行应用按钮操作:在 SAME sqlite db 中插入一些数据。 目标是在不打开应用程序的情况下使用小部件进行快速插入,并在我需要更复杂的操作时使用应用程序。

  1. 小部件是正确的方法吗?
  2. 是否可以在应用程序(真正的所有者)和小部件之间共享相同的数据库?怎么样?
  3. 我需要 contentProvider 吗?

谢谢

【问题讨论】:

    标签: android android-widget android-sqlite android-contentprovider


    【解决方案1】:

    是否可以在应用(真正的所有者)和小部件之间共享相同的数据库?

    是的。

    怎么做?

    通常,应用小部件只是应用的一部分。您使用它与使用活动或片段或其他任何东西没有什么不同,因为它都是一个应用程序。

    但请记住,AppWidgetProvider 之类的方法(如 onUpdate())是在主应用程序线程上调用的。在一个活动中,您可能只使用一个裸线程来执行数据库 I/O,这没关系,因为您的应用程序处于前台。但是,对于应用程序小部件更新,您的应用程序可能在后台,并且您的进程可能不会持续很长时间。使用 IntentService 进行数据库 I/O(由 onUpdate() 启动)并更新应用小部件内容。

    我需要 contentProvider 吗?

    仅当您希望应用小部件与应用代码的其余部分位于单独的应用中时。通常,这不是一个好主意,因为用户必须安装两个应用程序(主应用程序和应用程序小部件应用程序)。

    【讨论】:

    • 因为我对 android 开发很陌生,所以我问你一些更多的细节......我如何开发一个作为我应用程序一部分的小部件?最好是如果小部件中的按钮我可以在主应用程序中设置回调方法
    • 好的,我正在阅读指南。还有一个问题......如果我开发一个带有按钮的应用小部件以与主应用交互,这是否意味着主应用已加载并在后台工作?每时每刻?在这种情况下,我认为共享数据库并且不需要后台工作应用程序的小部件会更好。对吗?
    • @acca2o:“一直?” - 不。只有当应用小部件需要更新,或者用户点击应用小部件中的某些内容时,您的进程才需要运行以支持应用小部件。
    猜你喜欢
    • 2017-12-08
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多