欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

[Android]静态广播监听器,android监听器,[Java]代码pack

来源: javaer 分享于  点击 29660 次 点评:260

[Android]静态广播监听器,android监听器,[Java]代码pack


[Java]代码

package cn.outofmemory.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();        }    }}
相关栏目:

用户点评