欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現靜態(tài)廣播監(jiān)聽器的方法

 更新時間:2015年07月14日 16:55:59   作者:鑒客  
這篇文章主要介紹了Android實現靜態(tài)廣播監(jiān)聽器的方法,涉及Android的廣播機制與記錄監(jiān)聽廣播信息的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

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

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;
/**
 * 本例子將記錄可靜態(tài)注冊的廣播被監(jiān)聽到的頻度。<br/>
 * 1.建立一表{ACTION_NAME廣播名稱,LAST_TIME最近一次發(fā)生時間,COUNT總共記錄到的次數}<br/>
 * 2.在ActionReceiver中監(jiān)聽廣播,并記錄。 <br/>
 * 3.在DBContentProvider中更新數據庫記錄<br/>
 * 4.在BroadcastActionRecordAct.ActionDBObserver中監(jiān)聽數據庫的變化,
 * 并使用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程序設計有所幫助。

相關文章

  • Android實現左滑刪除列表功能

    Android實現左滑刪除列表功能

    這篇文章主要為大家詳細介紹了Android自定義左滑刪除列表功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android中Glide獲取圖片Path、Bitmap用法詳解

    Android中Glide獲取圖片Path、Bitmap用法詳解

    這篇文章主要介紹了Android中Glide獲取圖片Path、Bitmap用法以及代碼分析,需要的朋友們參考一下吧。
    2017-12-12
  • Android自定義View的一些獨家技巧

    Android自定義View的一些獨家技巧

    很多人把自定義View想得復雜了,以為有多高深,主要還是沒有實踐過,下面這篇文章主要給大家介紹了關于Android自定義View的一些獨家技巧,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Android實現view拖動到任意位置

    Android實現view拖動到任意位置

    這篇文章主要為大家詳細介紹了Android實現view拖動到任意位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Android自定義SeekBar實現滑動驗證且不可點擊

    Android自定義SeekBar實現滑動驗證且不可點擊

    這篇文章主要為大家詳細介紹了Android自定義SeekBar實現滑動驗證且不可點擊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Android?Studio實現簡單繪圖板

    Android?Studio實現簡單繪圖板

    這篇文章主要為大家詳細介紹了Android?Studio實現簡單繪圖板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • android雙緩沖技術實例詳解

    android雙緩沖技術實例詳解

    這篇文章主要介紹了android雙緩沖技術實例詳解,需要的朋友可以參考下
    2014-07-07
  • Flutter Future異步操作詳細講解

    Flutter Future異步操作詳細講解

    這篇文章主要介紹了Flutter Future異步操作,future是Future類的對象,其表示一個T類型的異步操作結果。如果異步操作不需要結果,則future的類型可為Future
    2023-03-03
  • Android 消息隊列模型詳解及實例

    Android 消息隊列模型詳解及實例

    這篇文章主要介紹了 Android 消息隊列模型詳解及實例的相關資料,需要的朋友可以參考下
    2017-04-04
  • Android應用禁止屏幕休眠的3種方法

    Android應用禁止屏幕休眠的3種方法

    這篇文章主要為大家詳細介紹了Android應用禁止屏幕休眠的3種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論