在同一个进程中运行应用程序和小部件?

时间:2012-02-23 17:53:30

标签: android android-appwidget

我有以下内容:

  1. 一款名为app1的应用
  2. 一个名为app2的可选应用程序(与app1相同的用户ID和证书。它具有'pro'功能的额外权限,用户可以选择是否安装它。)
  3. 小部件提供商
  4. 是否可以在同一个JVM实例中运行所有这三个实例,以便我可以在它们之间共享全局变量和同步锁?

    我搜索并环顾四周但仍然感到困惑的是,窗口小部件提供程序是否始终在与应用程序相同的JVM实例中运行。任何澄清或指示将不胜感激。

2 个答案:

答案 0 :(得分:3)

  

我搜索并环顾四周,但仍然感到困惑的是,窗口小部件提供程序是否始终在与应用程序相同的JVM实例中运行。

应用小部件将在与定义应用小部件提供商的APK中的其他组件相同的过程中运行。

  

一个名为app2的可选应用程序(与app1相同的用户ID和证书。它具有'pro'功能的额外权限,用户可以选择是否安装它。)

不建议这样做。 android:sharedUserId是一个脆弱的结构,主要供固件应用程序使用。基本上,您可以从不更改此值,而不会将所有已安装的用户从其现有的应用程序文件(例如数据库)中锁定。

  

是否可以在同一个JVM实例中运行所有这三个实例,以便我可以在它们之间共享全局变量和同步锁?

您将无法在它们之间共享静态数据成员(例如,全局变量),因为每个APK都有自己的类加载器。

答案 1 :(得分:1)

  

“应用小部件将在同一过程中运行”

这不正确。应用程序小部件在主屏幕进程中运行。或者在不在用户进程中的工作中。这就是您需要使用远程视图来访问和更新应用程序窗口小部件视图的原因之一。