Android 定时任务
2015-07-14 14:28
375 查看
package com.example.timingtask; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private Intent intent; // 定时任务 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = new Intent(this, TimeRunningService.class); } public void click(View view) { Toast.makeText(getApplicationContext(), "定时任务已经启动", Toast.LENGTH_SHORT).show(); startService(intent); } }
package com.example.timingtask;
import java.util.Date;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
public class TimeRunningService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
new Thread() {
@Override
public void run() {
android.util.Log.i("TimeRunningService : ", new Date().toString());
super.run();
}
}.start();
AlarmManager alarmService = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent2 = new Intent(this, AlarmBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent2, 0);
System.out.println("*********************");
long realtime = SystemClock.elapsedRealtime();
long triggerTime = realtime + 5 * 1000;// 每隔5秒出发一次
System.out.println("realtime " + realtime);
System.out.println("triggerTime " + triggerTime);
System.out.println("*********************");
alarmService.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pendingIntent);
return super.onStartCommand(intent, flags, startId);
}
}
package com.example.timingtask; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class AlarmBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("AlarmBroadcastReceiver", "onReceive"); Intent intent2 = new Intent(context, TimeRunningService.class); context.startService(intent2); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.timingtask" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.example.timingtask.TimeRunningService" > </service> <receiver android:name="com.example.timingtask.AlarmBroadcastReceiver" > </receiver> </application> </manifest>
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories