0

Androidアプリケーションに次の機能を実装する必要があります。定期的なサービスをトリガーするトグルボタン。

より良い方法で問題を提示しましょう。「オン」モードのトグルボタンが必要です。このモードでは、定期的に(たとえば、5分ごとに)サービスを開始したいと思います。「オフ」モードでは、定期的なサービスは無効になります。私はAlarmManagerサービスを使用する必要があると思います。

ガイドライン(可能な場合はコード付き)またはこれを行うための優れたチュートリアルを教えていただけますか?

少し早いですがお礼を

4

1 に答える 1

0

プライベート AlarmManager alarmManager; プライベート PendingIntent pendingIntent;

この作成されたメソッドを使用して、トグル ボタンのクリック時にサービスをオンまたはオフにします。また、AlarmManager を必ずシングルトンとして使用してください。

private void setService() {

                try {
                    if (alarmManager != null) {
                        alarmManager.cancel(pendingIntent);
                    }
                } catch (Exception e) {

                    e.printStackTrace();
                }
                Intent intent = new Intent(this, MyBroadCastReceiver.class);

                pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

                alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); //
                        // 60 seconds i.e 1 min 
                long time = 60 * 1000;

                alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                        SystemClock.elapsedRealtime() + time, time, pendingIntent);

            }

serviceUpdates を削除するには、次の方法を使用します。

 private void removeService() {
            try {
                if (alarmManager != null) {
                    alarmManager.cancel(pendingIntent);
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }

これで、ブロードキャスト クラスは次のようになります。

public class MyBroadCastReceiver extends BroadcastReceiver {

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


        Log.d("test_log", "broadcast worked ");

    }
}

次に、レシーバーのマニフェスト宣言を行います。

<receiver android:name=".MyBroadCastReceiver"></receiver>
于 2012-09-30T13:57:29.007 に答える