0

AlarmManagerが起動したときに作成する必要があるサービスを作成したという問題があります。そして実際には開始しています(onStartCommandが呼び出されトーストが表示されます)が、ログに同時に表示されます:

    09-19 02:48:32.537: I/ActivityManager(1983): START {flg=0x4 cmp=com.my.app/.syncService.SyncService (has extras)} from pid -1
    09-19 02:48:39.662: W/ActivityManager(1983): Unable to start service Intent { act=com.my.app.syncService.SyncService flg=0x4 (has extras) }: not found

意図:

    Intent intent = new Intent("com.my.app.syncService.SyncService");
    PendingIntent pendingIntent = PendingIntent.getService(this, 12345, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000*30, pendingIntent);

私のサービスは次のようになります。

public class SyncService extends Service{

    @Override
    public void onCreate() {
        Log.d("SyncService", "onCreate");
        Log.d("SyncService", "onCreate");
        Log.d("SyncService", "onCreate");
        super.onCreate();
        Toast.makeText(this, "Debug: SyncService created", Toast.LENGTH_LONG).show();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Debug: SyncService onStartCommand", Toast.LENGTH_LONG).show();
        return super.onStartCommand(intent, flags, startId);
    }
}

AndroidManifest:

   <application>
       ...
       <service android:enabled="true" android:name="com.my.app.syncService.SyncService"/>       
   </application>

ちょっと変じゃないですか?onCreate getは1回だけ呼び出されます。これは私には理にかなっていますが、残りは?

4

3 に答える 3

0

この行を変更してみてください

 Intent intent = new Intent("com.my.app.syncService.SyncService");

 Intent intent = new Intent(context,SyncService.class);

ここでは、context作成する場所によって異なりますAlarmManager

于 2012-09-19T02:20:42.767 に答える
0

AndroidManifest.xml にレシーバーがありませんか。このようなもの:

    <receiver android:name="SyncReceiver">
        <intent-filter>
            <action android:name="com.my.app.syncService.SyncService""/>
        </intent-filter>
    </receiver>
于 2012-09-19T01:45:22.367 に答える
0
Intent intent = new Intent("com.my.app.syncService.SyncService");

AndroidManifest.xml の Intent クラス参照のインテント フィルターのコンストラクター

于 2012-09-19T02:43:58.930 に答える