1

ブロードキャスト レシーバーに定期的なアラームを設定させ、サービスを起動させます。残念ながら、これによりサービスが繰り返し呼び出されることはありません (logcat に基づく)。時間間隔にもさまざまな値を試しました。誰か助けてくれませんか?(Android 3.2 Motorola xoom で Eclipse を使用してテストしています)

以下は、ブロードキャスト レシーバーのコードです。

    alarm = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
    Intent intentUploadService = new Intent (arg0, com.vikramdhunta.UploaderService.class);

    Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 3);

    PendingIntent pi = PendingIntent.getBroadcast(arg0, 0, intentUploadService , 0);
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5, pi);

以下は Service クラスのコードです

    public UploaderService()
    {
        super("UploaderService");
        mycounterid = globalcounter++;
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        synchronized(this)
        {
            try
            {
                for (int i = 1;i < 5;i++)
                {
// doesn't do much right now.. but this should appear in logcat
                    Log.i(TAG,"OK " + globalcounter++ + " uploading..." + System.currentTimeMillis());

                }
            }
            catch(Exception e)
            {

            }
        }   
    }
     @Override
        public void onCreate() {
            super.onCreate();
            Log.d("TAG", "Service created.");
        }


        @Override
        public IBinder onBind(Intent arg0) {
            return null;
        }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
    {
        Log.i(TAG, "Starting upload service..." + mycounterid);
        return super.onStartCommand(intent,flags,startId);
    }
4

1 に答える 1

2

わかりました、これを手に入れたようです。2 つの変更が必要でし

。動作しませんでした。間隔が5秒しかないので、これが正しい方法だと思います。

これで、適切なサービス/機能を 5 秒ごとに呼び出すことができます。万歳!

于 2012-10-07T10:02:03.077 に答える