本文概述
- Android AlarmManager示例
借助android中的Android AlarmManager,你可以安排应用程序在将来的特定时间运行。无论你的手机是否正在运行,它都可以工作。
Android AlarmManager拥有CPU唤醒锁,可确保在处理广播之前不让手机进入睡眠状态。
Android AlarmManager示例让我们看一个简单的AlarmManager示例,该示例在用户提供的特定时间后运行。
activity_main.xml你只需要拖动一个编辑文本和一个按钮,如下所示。
<
?xml version="1.0" encoding="utf-8"?>
<
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.srcmini.com.alarmmanager.MainActivity"><
Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="103dp" /><
EditText
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:ems="10" />
<
/RelativeLayout>
活动类当用户单击按钮时,活动类将启动警报服务。
package example.srcmini.com.alarmmanager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start= findViewById(R.id.button);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startAlert();
}
});
}public void startAlert(){
EditText text = findViewById(R.id.time);
int i = Integer.parseInt(text.getText().toString());
Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (i * 1000), pendingIntent);
Toast.makeText(this, "Alarm set in " + i + " seconds", Toast.LENGTH_LONG).show();
}
}
【android alarmmanager用法】让我们创建启动警报的BroadcastReceiver类。
package example.srcmini.com.alarmmanager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.widget.Toast;
public class MyBroadcastReceiver extends BroadcastReceiver {
MediaPlayer mp;
@Override
public void onReceive(Context context, Intent intent) {
mp=MediaPlayer.create(context, R.raw.alarm);
mp.start();
Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();
}
}
你需要在AndroidManifest.xml文件中提供一个接收器条目。
<
receiver android:name="MyBroadcastReceiver" >
<
/receiver>
让我们看看AndroidManifest.xml文件的完整代码。
<
?xml version="1.0" encoding="utf-8"?>
<
manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.srcmini.com.alarmmanager"><
application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<
activity android:name=".MainActivity">
<
intent-filter>
<
action android:name="android.intent.action.MAIN" /><
category android:name="android.intent.category.LAUNCHER" />
<
/intent-filter>
<
/activity>
<
receiver android:name="MyBroadcastReceiver" >
<
/receiver>
<
/application><
/manifest>
输出:
文章图片
文章图片
文章图片
推荐阅读
- android preferences用法示例
- android service使用教程
- android弹出菜单的例子
- android显式intent示例
- android上下文菜单示例
- android选项菜单示例
- android的fragment片段
- android共享app数据
- Android基本控件之RadioGroup