我有一个应该启动和停止服务的小部件(当它没有运行时启动它,当它运行时停止它)。这工作正常,但是,每次启动服务时,我的应用程序的主要活动也会启动,这是我不想要的。
如果我删除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);
谢谢,
尼克
答案 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()
添加到活动中。