启动服务的小组件也会启动主要活动

时间:2010-05-03 22:37:16

标签: android

我有一个应该启动和停止服务的小部件(当它没有运行时启动它,当它运行时停止它)。这工作正常,但是,每次启动服务时,我的应用程序的主要活动也会启动,这是我不想要的。 如果我删除MAIN-intent-filter( 来自应用程序清单的<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
),它按照我的意愿运行(不启动主要活动,只启动服务),但后来我显然没有主要活动...

这是我启动服务的方式(我认为这是正常的方式,我看不到任何可能导致MAIN意图触发的内容的引用):

Intent svc = new Intent(this, OnOffService.class);
startService(svc);

谢谢,
尼克

3 个答案:

答案 0 :(得分:4)

您的解决方案不是很好,例如当用户更改方向(旋转手机)时会发生onPause(),因此当发生这种情况时,您的应用就会消失。

我问了并找到了解决方案:Why does starting an activity from a widget cause my main activity to start as well?

答案 1 :(得分:0)

我现在通过向我的主要活动finish();添加onPause()来“解决”它。不是一个很好的解决方案,但主要活动并不重,所以重新加载它(而不是从内存中取回)不应该造成太大的伤害。仍然很奇怪,我很想知道我做错了什么:)!

答案 2 :(得分:0)

启动服务后,将finish()添加到活动中。