0

所以,我已經通過互聯網尋找解決方案,但沒有找到任何結合我需要的東西。啓動服務啓動到每15分鐘做一次工作

我需要這個: 如果移動設備重新啓動,我需要在啓動時啓動服務,每隔15分鐘將數據發送到我的服務器。我製作了用於啓動的代碼,但不知道如何實現計時器。 我需要2個廣播接收機和2個服務嗎?

我的廣播接收器:

public class BrReceiver extends BroadcastReceiver { 

    final public static String ONE_TIME = "onetime"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { 

      Intent serviceIntent = new Intent(context, Service.class); 
      context.startService(serviceIntent); 
     } 

    } 

} 

,我的服務:

public class Service extends IntentService { 

    private static final String TAG = "DownloadService"; 

    public Service() { 
     super(Service.class.getName()); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 

     Log.d(TAG, "Service Started!"); 


    } 


} 

和我AndroidManifest:

<!-- Declaring broadcast receiver for BOOT_COMPLETED event. --> 
     <receiver android:name=".services.BrReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
      </intent-filter> 
     </receiver> 

      <service 
      android:name=".services.Service" 
      android:exported="false" /> 

此服務,會每15分鐘重複切不可從活動開始,但在開機時啓動。

回答

1
對如下固定的間隔使用警報管理器啓動服務

最好的辦法:

//使用啓動服務AlarmManager

Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.SECOND, 10); 
    Intent intent = new Intent(Main.this, Service_class.class); 
    PendingIntent pintent = PendingIntent.getService(Main.this, 0, intent, 
      0); 
    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 
      36000 * 1000, pintent); 

    // click listener for the button to start service 
    Button btnStart = (Button) findViewById(R.id.button1); 
    btnStart.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startService(new Intent(getBaseContext(), Service_class.class)); 

     } 
    }); 

    // click listener for the button to stop service 
    Button btnStop = (Button) findViewById(R.id.button2); 
    btnStop.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      stopService(new Intent(getBaseContext(), Service_class.class)); 
     } 
    }); 
} 

感謝

相關問題