黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Broadcast偷懶,AlarmManager悲劇

系統(tǒng) 1929 0

?

這幾天在做安卓比武場第三上的定時(shí)設(shè)置壁紙效果(這個(gè)活動(dòng)不錯(cuò),希望大家踴躍參加),想要達(dá)到多定時(shí)的效果,就是設(shè)置多個(gè)換壁紙的效果。我使用 AlarmManager 進(jìn)行進(jìn)行定時(shí)發(fā)送換壁紙廣播,出現(xiàn)了一個(gè)問題就是 onreceive 收到都是第一個(gè)廣播的 intent.

下面我給出關(guān)鍵代碼而原代碼,有興趣的讀者可以下載代碼去運(yùn)行下,你會(huì)發(fā)現(xiàn)一個(gè)讓我昨天到兩點(diǎn)多才睡的問題

這些是發(fā)送信息的代碼

main.java

?

      package com.wjh.test;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Main extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
	Button btn ;
	int id = 1;
	char a = 'a';
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(this);
    }
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		
		Intent intent = new Intent(Main.this,MyReceive.class);
		
		//輸入action
		intent.setAction("com.wjh.action");
		//輸入id
		intent.putExtra("id", id);		
		//輸入字符
		intent.putExtra("char",a);
		
		PendingIntent pi = 
			PendingIntent.getBroadcast(Main.this, 0, intent, 0);
		//設(shè)置時(shí)間
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(System.currentTimeMillis());
		c.add(Calendar.SECOND,5);
		
		AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
		am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
		Toast.makeText(this,"第"+id+"次發(fā)出"+id+""+a,Toast.LENGTH_SHORT).show();
		id++;
		a++;
	}
}
    
?

?

?

這個(gè)接受信息的代碼

MyReceive.java

?

      public class MyReceive extends BroadcastReceiver{
 public static int i=0;
@Override
 public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub
if(intent.getAction().equals("com.wjh.action"))
 {
 int id = intent.getIntExtra("id", 0);
 char str = intent.getCharExtra("char", 'b');
 Toast.makeText(context,"第"+(++i)+"次"+ id+""+str, Toast.LENGTH_SHORT).show();
 }

 }
}
    
?

?


運(yùn)行的結(jié)果是:


Broadcast偷懶,AlarmManager悲劇
Broadcast偷懶,AlarmManager悲劇
?
?
Broadcast偷懶,AlarmManager悲劇
?
Broadcast偷懶,AlarmManager悲劇

發(fā)現(xiàn)了嗎?雖然發(fā)出的數(shù)據(jù)在變,但是接受到了都是同樣的的。

昨天晚上我也被這個(gè)東西搞死了,或許你們不可能再為這個(gè)問題而煩擾了,因?yàn)槲椰F(xiàn)在告訴你為什么會(huì)這樣 !

就是因?yàn)? Broadcast, 因?yàn)槲覀儼l(fā)送廣播,是把一個(gè) intent 弄到這里面,但是 broadcast 偷懶了, 只要你放入

Intent 是一樣的,那么他發(fā)出的永遠(yuǎn)都是第一個(gè)輸入的!

所以下面我們來是改變 intent action 來試試效果

我們來改下 main.jafva 文件代碼:

?

      
        //輸入action
intent.setAction("com.wjh.action");
      
    
?

?

?

改成

?

      
        //輸入action
intent.setAction("com.wjh.action"+id);
      
    
?

?

下面改下 MyReceive.java 的代碼

將整個(gè) onReceive 方法的代碼改成下面的 :

      
        
          public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub int id = intent.getIntExtra("id", 0); char a = intent.getCharExtra("char", 'b'); Toast.makeText(context,"第"+(++i)+"次受到"+ id+""+a, Toast.LENGTH_SHORT).show(); }
        
      
    
?

?

那么來看看效果圖吧:


Broadcast偷懶,AlarmManager悲劇


Broadcast偷懶,AlarmManager悲劇
?
Broadcast偷懶,AlarmManager悲劇
?
Broadcast偷懶,AlarmManager悲劇
?

看似很簡單,但是如果你想要通過 alarmManager 進(jìn)行傳送數(shù)據(jù),那么你將悲劇了,因?yàn)槟闶盏降挠肋h(yuǎn)的都是第一份 , 所以所 Broacast 偷懶,那么 alarmManager 悲劇!

下面我給出兩個(gè)例子的完整源代碼附件:


?

?

?

Broadcast偷懶,AlarmManager悲劇


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論