我正在开发具有一个活动类和服务类的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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)