編輯:關於Android編程
本文實例講述了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程序設計有所幫助。
三星s7微信消息推送收不到怎麼辦?不少用戶反映手機出現爆音、收不到微信、qq消息推送,那麼三星s7微信不提示怎麼辦?三星s7收不到微信消息推送怎麼解決?下文
當我們為新浪微博的登陸設置了賬號保護、手機綁定之後,便將新浪微博賬號的安全與我們的手機號聯系起來了。由於換號或者其它原因,我們需要解除綁定的時候該怎麼辦呢?
Android應用內社區SDK技術架構淺析應用內微社區是什麼 ? 圖1 圖2 雪球財經應用內社區 一、以友盟微社區為例簡單來說,友盟的微社區就是一款幫助
Spinner相當於下拉列表,在Android開發文檔中的關於Spinner的介紹: android.widget類 Spinnerjava.lang.Obje