为什么BroadcastReceiver在服务销毁时不会取消注册?

时间:2016-09-11 08:07:13

标签: android broadcastreceiver

我在服务中注册我的(广播接收器),当我的主要活动关闭我的服务时,我的(广播接收器)接收器工作正常吗?

我的问题是如何在后台保留(广播接收器)?

我的解决方案是个好主意?

myservice代码:

<cfloop query="csv_query">
                <cfquery datasource="#app.dsn#">
                    INSERT INTO CSVIMP (
                        Test1,
                        Test2
                    ) VALUES (
                        '#csv_query.column_1#',
                        '#csv_query.column_2#'
                    )
                </cfquery>
        </cfloop>

3 个答案:

答案 0 :(得分:2)

在代码(活动或服务)中创建BroadcastReceiver时,BroadcastReceiver应由活动或服务本身管理。

否则,如果您在清单中声明Broadcast Receiver,如果您的应用程序未运行,系统会自动为您的接收器创建新进程。当您的应用程序不可用时,这非常有用,例如BootCompleted)。

 <receiver android:name=".CustomReceiver">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
 </receiver>

答案 1 :(得分:1)

<receiver android:name=".MyReceiver">  
        <intent-filter>  
            <action android:name="android.intent.action.MY_BROADCAST"/>  
            <category android:name="android.intent.category.DEFAULT" />  
        </intent-filter>  
    </receiver>  

onReceive check服务正在运行

答案 2 :(得分:1)

之前的回答是正确的。从那里添加代码到您的清单文件, 然后创建新的java类:

public class MyReciever extends BroadcastReceiver{
@Override
    public void onReceive(Context context, Intent intent) {
//Do what you need to do when broadcast is received
}
}