3

Alarm Manager を使用してサービスを開始しようとしています。私はすべてを試しましたが、起動しません。アクティビティのボタン リスナーから以下のコードを呼び出しています。

    private void setAlarmManager(String interval) throws NumberFormatException, IOException
    {
        AlarmManager service = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(getApplicationContext(), MyService.class);

        PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(),
                                                           0,
                                                           i,
                                                           PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar cal = Calendar.getInstance();

        cal.add(Calendar.MINUTE, Integer.valueOf(interval));
        service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                                    (Integer.valueOf(interval) * 60000), pending);
    }

そして私のマニフェストは次のようになります:

<service android:enabled="true" android:name="com.pack.android.service.MyService"
            />

ユーザーが指定した時間 (分単位) に従ってサービスを開始しようとしています。しかし、私のサービスは呼び出されません。

次のコードを使用してサービスを呼び出すと、機能します。私のプロジェクトのターゲット バージョンは 16 です。

getApplicationContext().startService(i);
4

1 に答える 1

4

as を使用してサービスを開始するには、 に変更PendingIntent.getBroadcastします。PendingIntent.getServicePendingIntent

PendingIntent pending = PendingIntent.getService(getApplicationContext(),
                                     0,
                                     i,
                                   PendingIntent.FLAG_CANCEL_CURRENT);
于 2013-01-26T12:18:49.290 に答える