AlarmManager与PendingIntent的联合使用(一)

来源:互联网 发布:开个淘宝代销要多少钱 编辑:程序博客网 时间:2024/05/22 00:34

AlarmManager与PendingInteng.getBroadcast及getActivity:

package com.example.alarmmanager;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.app.PendingIntent;import android.app.AlarmManager;import android.content.Intent;import android.content.Context;import android.widget.Button;import android.view.View;import android.view.View.OnClickListener;import android.util.Log;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnBroadcast = (Button)findViewById(R.id.btnBroadcast);btnBroadcast.setOnClickListener(new OnClickListener() {public void onClick(View v) {AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, new Intent("MYALARMRECEIVER"), Intent.FLAG_ACTIVITY_NEW_TASK);long time = System.currentTimeMillis();am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 3000, pi);Log.d("btnBroadcast", "onClick");}});Button btnActivity = (Button)findViewById(R.id.btnActivity);btnActivity.setOnClickListener(new OnClickListener(){public void onClick(View v) {AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(MainActivity.this, MyActivity.class);PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);long time = System.currentTimeMillis();am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 10000, pi);Log.d("btnActivity", "onClick");}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}/*public void onClick(View v) {AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);PendingIntent pi;long time ;switch (v.getId()) {case R.id.btnBroadcast:pi = PendingIntent.getBroadcast(MainActivity.this, 0, new Intent("MYALARMRECEIVER"), Intent.FLAG_ACTIVITY_NEW_TASK);time = System.currentTimeMillis();am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 3000, pi);Log.d("btnBroadcast", "onClick");break;case R.id.btnActivity:Intent intent = new Intent(this, MyActivity.class);pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);time = System.currentTimeMillis();am.setRepeating(AlarmManager.RTC_WAKEUP, time, 3000, pi);Log.d("btnActivity", "onClick");}}*/}

广播接收者:

package com.example.alarmmanager;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class ActionBroadcaset extends BroadcastReceiver {private static int num = 0;public void onReceive(Context context, Intent intent) {String action = intent.getAction();Log.d("ActionBroadcast", "action:" + action);if ("MYALARMRECEIVER".equals(action) == true) {Log.d("ActionBroadcast", "New message " + (num++));}}}

getActivity开启的Activity:

package com.example.alarmmanager;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.util.Log;public class MyActivity extends Activity{protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my);Log.d("MyActivity", "onCreate");}}

用getBroadcast和getActivity要在配置文件中作些相应的添加:

<activity             android:name="com.example.alarmmanager.MyActivity"             android:label="@string/app_name">        </activity>        <receiver             android:name="ActionBroadcaset">            <intent-filter>                <action android:name="MYALARMRECEIVER"/>            </intent-filter>        </receiver>

其中的两个xml文件,activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <Button        android:id= "@+id/btnBroadcast"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="广播Broadcast" />    <Button        android:id="@+id/btnActivity"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="72dp"        android:text="活动Activity" />    <Button        android:id="@+id/btnService"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/btnActivity"        android:layout_below="@+id/btnActivity"        android:layout_marginTop="36dp"        android:text="服务Service" /></RelativeLayout>

activity_my.xml:

<?xml version="1.0" encoding="UTF-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"   >    <TextView        android:id= "@+id/btnBroadcast"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="活动" /></RelativeLayout>



0 0