android alarmmanager用法

本文概述

  • Android AlarmManager示例
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 alarmmanager用法

文章图片
android alarmmanager用法

文章图片
android alarmmanager用法

文章图片

    推荐阅读