html5中文学习网

您的位置: 首页 > android » 正文

Android实现静态广播监听器的方法_Android

[ ] 已经帮助:人解决问题

本文实例讲述了Android实现静态广播监听器的方法。分享给大家供大家参考。具体实现方法如下:nZpHTML5中文学习网 - HTML5先行者学习网

package lab.sodino.broadcastaction;import lab.sodino.util.DatabaseOpenHelper;import lab.sodino.util.SodinoOut;import android.app.Activity;import android.content.ContentResolver;import android.database.ContentObserver;import android.database.Cursor;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.TextView;/** * 本例子将记录可静态注册的广播被监听到的频度。<br/> * 1.建立一表{ACTION_NAME广播名称,LAST_TIME最近一次发生时间,COUNT总共记录到的次数}<br/> * 2.在ActionReceiver中监听广播,并记录。 <br/> * 3.在DBContentProvider中更新数据库记录<br/> * 4.在BroadcastActionRecordAct.ActionDBObserver中监听数据库的变化, * 并使用Handler机制将最新情况显示在txtInfo上。<br/> * 5.DatabaseOpenHelper将实现基本的数据库操作。 *  * @author Sodino */public class BroadcastActionRecordAct extends Activity implements  Button.OnClickListener { private TextView txtInfo; private DatabaseOpenHelper dbHelper; private Button btnRefresh; /** clear功能未完善。 */ private Button btnClear; private Handler handler = new Handler() {  public void handleMessage(Message msg) {   String info = (String) msg.obj;   txtInfo.setText(info);  } }; @Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  LayoutParams lpPC = new LayoutParams(LayoutParams.FILL_PARENT,    LayoutParams.WRAP_CONTENT);  LayoutParams lpCC = new LayoutParams(LayoutParams.WRAP_CONTENT,    LayoutParams.WRAP_CONTENT);  btnRefresh = new Button(this);  btnRefresh.setLayoutParams(lpCC);  btnRefresh.setText("Refresh");  btnRefresh.setOnClickListener(this);  btnClear = new Button(this);  btnClear.setLayoutParams(lpCC);  btnClear.setText("ClearTable");  btnClear.setOnClickListener(this);  LinearLayout subLayout = new LinearLayout(this);  subLayout.setLayoutParams(lpPC);  subLayout.setOrientation(LinearLayout.HORIZONTAL);  subLayout.addView(btnRefresh);  subLayout.addView(btnClear);  txtInfo = new TextView(this);  txtInfo.setLayoutParams(lpPC);  txtInfo.setTextColor(0xff0000ff);  txtInfo.setBackgroundColor(0xffffffff);  txtInfo.setText("Starting...");  txtInfo.setTextSize(15);  ScrollView scrollView = new ScrollView(this);  scrollView.setLayoutParams(lpPC);  scrollView.addView(txtInfo);  LinearLayout mainLayout = new LinearLayout(this);  mainLayout.setLayoutParams(lpPC);  mainLayout.setOrientation(LinearLayout.VERTICAL);  mainLayout.addView(subLayout);  mainLayout.addView(scrollView);  setContentView(mainLayout);  dbHelper = new DatabaseOpenHelper(this);  ContentResolver contentResolver = getContentResolver();  contentResolver.registerContentObserver(DBContentProvider.CONTENT_URI,    false, new ActionDBObserver(handler)); } public void onClick(View view) {  if (view == btnRefresh) {   refreshRecord();  } else if (view == btnClear) {   clearRecord();  } } public void refreshRecord() {  dbHelper.openReadableDatabase();  String info = dbHelper.getAllOrderedList(DatabaseOpenHelper.DESC);  dbHelper.close();  if (info != null) {   txtInfo.setText(info);  } else {   txtInfo.setText("<NULL/>");  }  dbHelper.close(); } public void clearRecord() {  dbHelper.openWritableDatabase();  dbHelper.clearRecord();  dbHelper.close(); } private class ActionDBObserver extends ContentObserver {  private Handler handler;  public ActionDBObserver(Handler handler) {   super(handler);   this.handler = handler;  }  public void onChange(boolean selfChange) {   super.onChange(selfChange);   String[] projection = { "ACTION_NAME", "LAST_TIME", "COUNT" };   // String selection = "select * from ActionTable";   String sortOrder = "COUNT DESC";   // dbHelper.openReadableDatabase();   // Cursor cursor = dbHelper.query(projection, null, null,   // sortOrder);   Cursor cursor = managedQuery(DBContentProvider.CONTENT_URI,     projection, null, null, sortOrder);   String info = "";   String line = "";   int actionIdx = 0;   int timeIdx = 1;   int countIdx = 2;   while (cursor.moveToNext()) {    line += cursor.getString(actionIdx) + " ";    line += cursor.getString(timeIdx) + " ";    line += cursor.getString(countIdx) + "/n";    info += line;    line = "";   }   Message msg = new Message();   msg.obj = info;   handler.sendMessage(msg);   cursor.close();   // dbHelper.close();   SodinoOut.out("Database does changed!!!");  }  public boolean deliverSelfNotifications() {   return super.deliverSelfNotifications();  } }}

希望本文所述对大家的Android程序设计有所帮助。nZpHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助