亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Broadcast偷懶,AlarmManager悲劇

系統 1777 0

?

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

下面我給出關鍵代碼而原代碼,有興趣的讀者可以下載代碼去運行下,你會發現一個讓我昨天到兩點多才睡的問題

這些是發送信息的代碼

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);
		//設置時間
		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+"次發出"+id+""+a,Toast.LENGTH_SHORT).show();
		id++;
		a++;
	}
}
    
?

?

?

這個接受信息的代碼

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();
 }

 }
}
    
?

?


運行的結果是:


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

發現了嗎?雖然發出的數據在變,但是接受到了都是同樣的的。

昨天晚上我也被這個東西搞死了,或許你們不可能再為這個問題而煩擾了,因為我現在告訴你為什么會這樣 !

就是因為 Broadcast, 因為我們發送廣播,是把一個 intent 弄到這里面,但是 broadcast 偷懶了, 只要你放入

Intent 是一樣的,那么他發出的永遠都是第一個輸入的!

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

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

?

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

?

?

改成

?

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

?

下面改下 MyReceive.java 的代碼

將整個 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 進行傳送數據,那么你將悲劇了,因為你收到的永遠的都是第一份 , 所以所 Broacast 偷懶,那么 alarmManager 悲劇!

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


?

?

?

Broadcast偷懶,AlarmManager悲劇


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美80岁老妇一级毛片 | 久青草国产在线视频亚瑟影视 | 高清不卡视频 | 亚洲精品一区二区四季 | 我不卡老子影院午夜伦我不卡四虎 | 在线观看日本一区 | 日韩黄色网址 | 俺去也理论网站 | 亚洲精品欧洲一区二区三区 | 老司机午夜在线视频免费观 | 97影院午夜在线观看视频 | 九九精品视频在线播放 | 亚洲视频国产 | 欧美乱妇高清视频免欢看关 | 亚洲免费在线播放 | 欧美一级性视频 | 日韩一区二区三区中文字幕 | 91糖心 | 亚洲精品美女国产一区 | 天天操夜夜添 | 91久久福利国产成人精品 | 99国产国人青青视频在线观看 | 成人性生活免费看 | 国产国语一级毛片中文 | 色偷偷亚洲女人天堂观看欧 | 亚洲精品在线视频观看 | 狠狠丁香激情久久综合 | 手机看片亚洲 | 欧美三级纯黄版 | 2021最新国产成人精品免费 | 欧美一级久久 | 四虎影视在线影院4hu | 亚洲视频aaa | 亚洲五月婷 | 狠狠乱| 丝袜三级 | 欧美成人看片一区二区三区 | 91精品日本久久久久久牛牛 | 91精品国产免费久久 | 国产成人精品cao在线 | 免费一级欧美片在线观免看 |