1.
public class AlarmActivity extends Activity implements OnClickListener {
private Button b_call_service, b_exit_service;
private Intent intent;
private PendingIntent p_intent;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
b_call_service = (Button) findViewById(R.id.call_alarm_service);
b_call_service.setOnClickListener(this);
b_exit_service = (Button) findViewById(R.id.exit);
b_exit_service.setOnClickListener(this);
intent = new Intent(this, AlarmReceiver.class);
p_intent = PendingIntent.getBroadcast(this, 0, intent, 0);
}
public void onClick(View arg0) {
if (arg0 == b_call_service) {
setTitle("Waiting... 5s后Alarm启动");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 5);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), p_intent);
}
if (arg0 == b_exit_service) {
setTitle("Alarm关闭");
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.cancel(p_intent);
}
}
}
public class AlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent i) {
context.startService(new Intent(context, AlarmService.class));
}
}
public class AlarmService extends Service {
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
// 只在创建时执行一次
}
public void onStart(Intent intent, int startId) {
// 可执行多次
Toast.makeText(this, "hello 土豆", Toast.LENGTH_LONG).show();
}
}
<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name="AlarmActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="AlarmReceiver" /> <service android:name="AlarmService" /> </application>
2.