本文實例總結了Android編程實用技術。分享給大家供大家參考,具體如下:
1、捕獲開機事件,啟動receiver
<receiver android:name=".BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter></receiver>
public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { context.startService(new Intent(context,MyService.class));//啟動service }}
2、啟動service,設置鬧鐘頻率,定時發起網絡請求,獲得數據
public class MyService extends Service{ private Context context; @Override public IBinder onBind(Intent arg0) { return null; } public void onStart(Intent intent, int startid) { context = this; Log.d("", "-------onStart------"); Calendar calendar=Calendar.getInstance(); long startTime = calendar.getTimeInMillis(); long repeatTime= 5*1000;//每5秒鐘,調度一次 Intent in = new Intent(MyService.this,taskReceiver.class); PendingIntent sender = PendingIntent.getBroadcast(MyService.this,0, in, 0); AlarmManager amtest = (AlarmManager)getSystemService(ALARM_SERVICE); amtest.setRepeating(AlarmManager.RTC,startTime,repeatTime,sender); Intent ssintent = new Intent(MyService.this,sstaskReceiver.class); PendingIntent sssender = PendingIntent.getBroadcast(MyService.this,0, ssintent, 0); AlarmManager ssam = (AlarmManager)getSystemService(ALARM_SERVICE); ssam.setRepeating(AlarmManager.RTC,startTime,repeatTime,sssender); }}
補充:在程序中,可以多開啟幾個AlarmManager,他們之間毫無關聯,可放心使用。
3、獲取每個AlarmManager發出的廣播,動態生成短信
public class taskReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.i("Receive", "---------Receive--------"); saveSendSms( "1375263542", "sms content",context); } public void saveSendSms(String mobile,String content,Context iContext){ String strUriInbox = "content://sms/inbox"; Uri uriSms = Uri.parse(strUriInbox); ContentValues cvs = new ContentValues(); cvs.put("address", mobile); cvs.put("body", content); cvs.put("type", 2); cvs.put("read", 3); iContext.getContentResolver().insert(uriSms, cvs); }}
每個AlarmManager對應一個BroadcastReceiver.
4、停止AlarmManager
public void onClick(View v) { Intent intent = new Intent(TestAlarm.this,taskReceiver.class); PendingIntent sender = PendingIntent.getBroadcast(TestAlarm.this, 0, intent, 0); AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);//注意跟生產AlarmManager要對應 am.cancel(sender); Log.i("", "------end-----");}
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選