Java registerreceiver中错误的解决方案

Java registerreceiver中错误的解决方案,java,android,android-service,Java,Android,Android Service,我正在使用以下代码注册一个接收器,但它显示了一个错误 语法错误或标记、构造函数放置错误 这是你的密码 此外,我希望即使在应用程序关闭时也能运行此功能 MyService.java onCreate()方法未命中右大括号}。格式化可以帮助您修复此类错误。你没有向我们充分展示你所做的一切。请按照以下步骤理解您必须首先定义您的接收器,然后再注册它: public class MyService extends Service { @Override public void on

我正在使用以下代码注册一个接收器,但它显示了一个错误 语法错误或标记、构造函数放置错误 这是你的密码 此外,我希望即使在应用程序关闭时也能运行此功能

MyService.java
onCreate()
方法未命中右大括号
}
。格式化可以帮助您修复此类错误。你没有向我们充分展示你所做的一切。请按照以下步骤理解

您必须首先定义您的接收器,然后再注册它:

    public class MyService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();


        if (!registered) {

            MyBroadcast mybroadcast=new MyBroadcast();

            registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_ON));
            registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));

    }
}

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    private class MyBroadcast extends BroadcastReceiver {

            @Override
            public void onReceive(Context context, Intent intent) {
                     //TODO some code here
                    }
                }
    }
BroadcastReceiver mybroadcast = new BroadcastReceiver (){
@Override
        public void onReceive(Context context, Intent intent) {
//define what you want the receiver to do when it is called
    }    


};
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));
然后注册:

BroadcastReceiver mybroadcast = new BroadcastReceiver (){
@Override
        public void onReceive(Context context, Intent intent) {
//define what you want the receiver to do when it is called
    }    


};
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));
在您的情况下,您希望放置两个IntentFilter,请执行以下操作:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction((Intent.ACTION_SCREEN_OFF));
intentFilter.addAction((Intent.ACTION_SCREEN_ON));
registerReceiver(mybroadcast, intentFilter);
如果不注销接收器,您将收到新的异常或警告,同时您希望服务继续工作,因此请在onDestroy中注销接收器:

/*
 * (non-Javadoc)
 * 
 * @see android.app.Service#onDestroy()
 */
@Override
public void onDestroy() {
    unregisterReceiver(mybroadcast);        
    super.onDestroy();
}

你定义了你的接收器吗?我想你缺少了一个大括号,比如@octopus says。在一个问题中缺少大括号。另一个是registerReceiver需要两个参数一个广播接收器第二个意图过滤器。在这种情况下,广播接收器参数缺少。