在Android中 Android AlarmManager 在Android的帮助下,您可以在将来的特定时间安排您的应用程序运行。
Android AlarmManager拥有一个CPU唤醒锁,可确保在处理广播之前不让手机进入睡眠状态。
让无涯教程看一下一个简单的AlermManager示例,它在用户提供的特定时间后运行。
您需要仅拖动EditText和按钮,如下所述。
<!--?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.learnfk.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"></button> <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"></edittext> </relativelayout>
当用户单击按钮时,Activity类启动警报服务。
链接:https://www.learnfk.comhttps://www.learnfk.com/android/android-alarmmanager.html
来源:LearnFk无涯教程网
package example.learnfk.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(); } }
让无涯教程创建开始警报的BroadcastReceiver类。
package example.learnfk.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.learnfk.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"></action> <category android:name="android.intent.category.LAUNCHER"></category> </intent-filter> </activity> <receiver android:name="MyBroadcastReceiver"></receiver> </application> </manifest>
输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)