首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

ANDROID编程有关问题,数据传递和窗口刷新

2012-04-14 
求一个ANDROID编程问题,数据传递和窗口刷新求一个ANDROID编程问题一个BroadcastReceiver截获了一个事件得

求一个ANDROID编程问题,数据传递和窗口刷新
求一个ANDROID编程问题
一个BroadcastReceiver截获了一个事件
得到了一个数据
数据要通过Intent传递给一个Activity

程序可以写成如下

  /* 返回主Activity */ 
  Intent i = new Intent(context, EX06_05.class); 
  /*自定义一Bundle*/
  Bundle mbundle = new Bundle(); 
  /*将短信信息以putString()方法存入自定义的bundle内*/
  mbundle.putString("STR_INPUT", sb.toString()); 
  /*将自定义bundle写入Intent中*/
  i.putExtras(mbundle); 
  /*设置Intent的Flag以一个全新的task来运行*/
  i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  context.startActivity(i);
------------------------------
这样会调用 EX06_05 这个类的onCreate方法
我们在这个方法里把数据取出来
程序如下

  try
  {
  /*取得短信传来的bundle*/
  Bundle bunde = this.getIntent().getExtras(); 
  if (bunde!= null)
  {
  /*将bunde内的字符串取出*/
  String sb = bunde.getString("STR_INPUT");
  mTextView1.setText("接收数据="+num+sb);
  }
  else
  {
  mTextView1.setText("等待接收数据..."+num); 
  }
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
---------------------------------

但是现在的问题是 如果当前Activity就是EX06_05 
那么该如何传数据,才能使 EX06_05 及时更新呢? 




[解决办法]
可以EX06_05的lanuch mode 设置成singleTask
不建议这样做。会使程序的任务管理产生混乱。

我的做法是将EX06_05的引用注册到实现BroadcastReceiver 的类里,形成一个Observer模式。
具体怎么做还是要看EX06_05这个Activity的生命周期和跟其他的Activity的关系吧。

热点排行