持续更新android Textview

持续更新android Textview,第1张

概述我正在开发具有一个活动类和服务类的Android应用程序.在使用中,将每10毫秒接收一次连续的批量数据(1090字节).我需要使用这些批量数据连续更新文本视图.从连续后台服务更新文本视图的推荐方法是什么?服务等级publicclassRecepServiceextendsService{publicstaticHandler

我正在开发具有一个活动类和服务类的Android应用程序.在使用中,将每10毫秒接收一次连续的批量数据(1090字节).我需要使用这些批量数据连续更新文本视图.从连续后台服务更新文本视图的推荐方法是什么?

服务等级

public class RecepService extends Service {public static Handler mHandler;StringBuilder hexstring;@OverrIDepublic IBinder onBind(Intent intent) {    return null;}@OverrIDepublic voID onCreate() {    super.onCreate();    init();}private voID init() {    mHandler = new Handler() {        @OverrIDe        public voID handleMessage(Message msg) {            if (msg.what == 0x123) {                byte[] readBuf = (byte[]) msg.obj;                int readBuflen = msg.arg1;                // here will receive 1090 bytes of data                 // every 10 milliseconds                ReceivepatIEntattributes(readBuf,readBuflen);            }        }    };}public voID ReceivepatIEntattributes(byte[] readBuf, int len) {    String total_data = "";    total_data = bytetohex(readBuf, len);    MainActivity.recep.setText(MainActivity.recep.getText().toString() + "\t" +            "" + total_data );}String bytetohex(byte[] txt, int len) {    String p="";    byte[] text = new byte[len];    text = txt;    hexstring = new StringBuilder();    for (int j = 0; j < len; j++) {        String hex= Integer.toHexString(0xFF & txt[j]);        if (hex.length()==1) {            hexstring.append("0");        }        hexstring.append(hex+" ");    }    p=p+hexstring.toString();    return p;}@OverrIDepublic voID onDestroy() {    super.onDestroy();}@OverrIDepublic int onStartCommand(Intent intent, int flags, int startID) {    return START_STICKY;}}

解决方法:

如果要使用计划和计时器任务,则可以使用See My Answer

要解决当前问题,请遵循以下说明.
假设您的活动有一个广播接收器

private broadcastReceiver mReceiver;

然后,您将覆盖将在其中注册广播接收器的onResume()方法以及将在其中取消注册接收器的onPause()方法:

@OverrIDe    protected voID onResume() {        // Todo auto-generated method stub        super.onResume();        IntentFilter intentFilter = new IntentFilter(                "androID.intent.action.MAIN");        mReceiver = new broadcastReceiver() {            @OverrIDe            public voID onReceive(Context context, Intent intent) {                //extract your message from intent                String msg_for_me = intent.getStringExtra("YOUR_MESSAGE");                //log your message value                Log.i("mytag", msg_for_me);            }        };        //registering your receiver        this.registerReceiver(mReceiver, intentFilter);    }    @OverrIDe    protected voID onPause() {        // Todo auto-generated method stub        super.onPause();        //unregister your receiver        this.unregisterReceiver(this.mReceiver);    }

在这里,广播接收器通过androID.intent.action.MAIN进行了过滤,并且来自Service的消息将使用此过滤器对broadCast进行过滤

现在,您的Method Receive PatIEnt属性将如下所示:

public voID ReceivepatIEntattributes(byte[] readBuf, int len) {    String total_data = "";    total_data = bytetohex(readBuf, len);    Intent i = new Intent("androID.intent.action.MAIN").putExtra("YOUR_MESSAGE",  total_data);    this.sendbroadcast(i);}

而已. 总结

以上是内存溢出为你收集整理的持续更新android Textview全部内容,希望文章能够帮你解决持续更新android Textview所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1093935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存