国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現靜態廣播監聽器的方法

2020-04-11 11:29:09
字體:
來源:轉載
供稿:網友

本文實例講述了Android實現靜態廣播監聽器的方法。分享給大家供大家參考。具體實現方法如下:

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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙雅县| 都安| 明溪县| 南漳县| 白城市| 晴隆县| 攀枝花市| 怀安县| 河曲县| 卢氏县| 铜川市| 城市| 拜城县| 体育| 锦屏县| 股票| 满城县| 安庆市| 黔南| 平罗县| 黄冈市| 仙游县| 江源县| 陆川县| 沾化县| 中超| 汝州市| 白河县| 绩溪县| 湖北省| 长泰县| 武穴市| 务川| 陇川县| 遂溪县| 蚌埠市| 若羌县| 祁阳县| 建湖县| 武冈市| 明星|