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 に答える