用AlarmManager和Service实现定时任务

在开发过程中,我们可能要每隔一段时间,去执行一次任务,我们就可以用AlarmManager和Service实现定时任务,比如说,每隔5秒钟,请求一次网络数据

MainActivity.java

package com.zhoujian.task.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.zhoujian.task.R;
import com.zhoujian.task.service.MyService;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = new Intent(MainActivity.this, MyService.class);
        startService(intent);
    }
}

MyService.java

  <service android:name=".service.MyService"/>
package com.zhoujian.task.service;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;


/**
 * Created by zhoujian on 2017/3/23.
 */

public class MyService extends Service
{

    public static final String TAG = "MyService";

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent,  int flags, int startId)
    {
        new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                Log.i(TAG, "5秒后run()方法执行了!");
            }
        }).start();

       AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        //5秒的时间
        int  time = 1000*5;

        //获取系统开机至今所经历的毫秒
        long startTime = SystemClock.elapsedRealtime()+time;

        Intent in  = new Intent(this,MyService.class);

        PendingIntent pendingIntent = PendingIntent.getService(this,0,in,0);

        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,startTime,pendingIntent);

        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}

用AlarmManager和Service实现定时任务_第1张图片

你可能感兴趣的:(Android基础)