AlarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服务。AlarmManager对象一般通过Context.getSystemService(Context.ALARM_SERVICE)方法获得。
下面看一个例子加深理解:
package com.app;
import com.app.R;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
*
* 测试AlarmManager
*/
public class MainActivity extends Activity {
// 声明Button
private Button setBtn, cancelBtn;
// 定义广播Action
private static final String BC_ACTION = "com.action.BC_ACTION";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置当前布局视图
setContentView(R.layout.main);
// 实例化Button
setBtn = (Button) findViewById(R.id.Button01);
cancelBtn = (Button) findViewById(R.id.Button02);
// 获得AlarmManager实例
final AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
// 实例化Intent
Intent intent = new Intent();
// 设置Intent action属性
intent.setAction(BC_ACTION);
intent.putExtra("msg", "你该去开会啦!");
// 实例化PendingIntent
final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
intent, 0);
// 获得系统时间
final long time = System.currentTimeMillis();
// 设置按钮单击事件
setBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 重复提示,从当前时间开始,间隔5秒
am.setRepeating(AlarmManager.RTC_WAKEUP, time,
5 * 1000, pi);
}
});
// 设置按钮单击事件
cancelBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
am.cancel(pi);
}
});
}
}
注:PendingIntent的一个静态方法,
getBroadcast
public static PendingIntent getBroadcast(Context context,
int requestCode,
Intent intent,
int flags)
-
Retrieve a PendingIntent that will perform a broadcast, like calling
Context.sendBroadcast(). -
-
-
参数:
-
context- The Context in which this PendingIntent should perform the broadcast. -
requestCode- Private request code for the sender (currently not used). -
intent- The Intent to be broadcast. -
flags- May beFLAG_ONE_SHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT,FLAG_UPDATE_CURRENT, or any of the flags as supported byIntent.fillIn()to control which unspecified parts of the intent that can be supplied when the actual send happens.
返回:
-
Returns an existing or new PendingIntent matching the given parameters. May return null only if
FLAG_NO_CREATEhas been supplied.
-
package com.app;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 获得提示信息
String msg = intent.getStringExtra("msg");
// 显示提示信息
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
}
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="com.action.BC_ACTION"/>
</intent-filter>
</receiver>结果:
1145

被折叠的 条评论
为什么被折叠?



