0

我有一个MainApplication扩展Application.
我也有一个AlarmBroadcastReceiver扩展类BroadcastReceiver
onReceive(context, intent)AlarmBroadcastReceiver获取数据intent并启动服务的方法。我在一个单独的线程中运行服务,这是它的声明AndroidManifest.xml

<service android:name="***myPackageName***.AlarmService"
                 android:process=":remote">
</service>

问题如下:如果我在 Android 4.0 上通过单击“主页”按钮关闭应用程序,打开“最近的应用程序”并在服务运行时将应用程序拉到左侧,然后再次启动应用程序(服务仍然running),一个新的服务,当AlarmBroadcastReceiver接收到一个新的意图时启动,无法获取MainApplication类的数据(即使是静态变量为MainApplication空)。为什么?
我无法执行调试,因为当我关闭应用程序时调试器已分离...

4

1 回答 1

1

为什么?

因为您添加了android:process=":remote",它在一个单独的进程中运行您的服务,并带有您自己的Application对象的单独副本。

只需删除android:process=":remote",因为无论如何使用多个进程在 Android 上都是一种反模式。

于 2013-07-11T11:39:32.800 回答