0

我想实现一个处理屏幕开/关的服务。为此,我创建BootReceiver了在启动完成时调用并在我启动服务的过程中。

但是,OnCreate从来没有调用过,为什么?

当我打印程序的日志时,onCreate即使我看到了onStartCommand' 的日志,我也永远不会看到 ' 的日志。这怎么可能?请帮助我理解这一点。

这是BootReceiver一开始就调用的:

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.w("TAG", "BootReceiver");

        Intent service = new Intent(context, ScreenListenerService.class);
            context.startService(service);

    }

}

这是服务:

public class ScreenListenerService extends Service {


    public void OnCreate(){
        super.onCreate();
        Log.w("TAG", "ScreenListenerService---OnCreate ");
    }


     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {

            Log.w("TAG", "ScreenListenerService---onStart ");


        }

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

}

和清单:

<service android:name=".ScreenListenerService"></service>

        <receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                 <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
            </intent-filter>
        </receiver>
4

2 回答 2

6

改变:

public void OnCreate(){
    super.onCreate();
    Log.w("TAG", "ScreenListenerService---OnCreate ");
}

至:

public void onCreate(){
    super.onCreate();
    Log.w("TAG", "ScreenListenerService---OnCreate ");
}

Java 区分大小写,所以OnCreate()!=onCreate()

于 2013-04-28T16:57:14.317 回答
0

中的拼写错误onCreate。您正在使用 OnCreate 而不是onCreate. 为了摆脱这种错误,最好在@override每次覆盖方法时使用注释

于 2013-04-28T17:02:48.537 回答