持久的BroadcastReceiver

时间:2014-01-10 21:01:28

标签: android android-intent

(我没有在其他地方明确回答以下问题,所以我会在这里问。)

我将BroadcastReceiver子类化以捕获正在捕获的新照片。这个子类工作得很好,但是如果我的应用程序的进程不活动,我的自定义BroadcastReceiver也没有运行,因此在发送相关意图时不会触发。

持久性的推荐方法是什么(真的,如果我的应用程序正在运行,那么)是什么?BroadcastReceiver?我得到的印象是我应该使用服务,但我不清楚我的服务除了:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}
我认为,我们坚持服务。否则,对我来说似乎很奇怪,我的AndroidManifest.xml中实际引用的BroadcastReceiver在我的服务中没有引用。

(旁注,我有另一个自定义BroadcastReceiver,其唯一目的是在设备启动时启动上述服务。谢谢Android BroadcastReceiver on startup。)

1 个答案:

答案 0 :(得分:2)

您可以在清单中使用意图过滤器来触发广播接收器,如下所示:

 <receiver android:name="MyReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver>

即使应用关闭,这也应该让接收者接收事件。

像这样定义你的接收器:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Intent service = new Intent(context, WordService.class);
    context.startService(service);
  }
} 

从本教程略微编辑:

http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html