哪些网站做品牌折扣的建站公司技术服务费
news/
2025/9/22 18:30:55/
文章来源:
哪些网站做品牌折扣的,建站公司技术服务费,萍缘网站建设工作,企业所得税怎么征收几个点在开发工程中线程可以帮助我们提高运行速度#xff0c;Android开发中我知道的线程有四个一个是老生长谈的Thread#xff0c;第二个是asyncTask,第三个#xff1a;TimetTask,第四个是Looper,四个多线程各有个的有点#xff0c;Thread的运行速度是最快的#xff0c;AsyncTas…在开发工程中线程可以帮助我们提高运行速度Android开发中我知道的线程有四个一个是老生长谈的Thread第二个是asyncTask,第三个TimetTask,第四个是Looper,四个多线程各有个的有点Thread的运行速度是最快的AsyncTask的规范性是最棒的其它两个也有自己的优点下面先贴上三个列子1.Thread与Handler组合比较常见Handler主要是帮助我们来时时更新UI线程这里在后天加载100张图片然后没加载完成一个用handler 返回给UI线程一张图片并显示最后加载完成返回一个List给UI线程 Handler就是一个后台线程与UI线程中间的桥梁package com.android.wei.thread;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class Activity01 extends Activity {/** Called when the activity is first created. *//**读取进度**/public final static int LOAD_PROGRESS 0;/**标志读取进度结束**/public final static int LOAD_COMPLETE 1;/**开始加载100张图片按钮**/Button mButton null;/**显示内容**/TextView mTextView null;/**加载图片前的时间**/Long mLoadStart 0L;/**加载图片完成的时间**/Long mLoadEndt 0L;Context mContext null;/**图片列表**/private List list;/**图片容器**/private ImageView mImageView;//接受传过来得消息Handler handler new Handler(){public void handleMessage(Message msg){switch(msg.what){case LOAD_PROGRESS:Bitmap bitmap (Bitmap)msg.obj;mTextView.setText(当前读取到第msg.arg1张图片);mImageView.setImageBitmap(bitmap);break;case LOAD_COMPLETE:list (List) msg.obj;mTextView.setText(读取结束一共加载list.size()图片);break;}super.handleMessage(msg);}};public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mContext this;setContentView(R.layout.main);mButton (Button) findViewById(R.id.button1);mTextView(TextView) findViewById(R.id.textView1);mImageView (ImageView) this.findViewById(R.id.imageview);mTextView.setText(点击按钮加载图片);mButton.setOnClickListener(new OnClickListener(){public void onClick(View v){//调用方法LoadImage();}});}public void LoadImage(){new Thread(){public void run(){mLoadStart System.currentTimeMillis();List list new ArrayList();for(int i 0;i100;i){Bitmap bitmapReadBitmap(mContext,R.drawable.icon);Message msg new Message();msg.what LOAD_PROGRESS;msg.arg1 i1;list.add(bitmap);msg.obj bitmap;handler.sendMessage(msg);}mLoadEndt System.currentTimeMillis();Message msg new Message();msg.what LOAD_COMPLETE;msg.objlist;msg.arg1 (int) (mLoadEndt - mLoadStart);handler.sendMessage(msg);}}.start();}public Bitmap ReadBitmap(Context context,int resId){BitmapFactory.Options opt new BitmapFactory.Options();opt.inPreferredConfig Bitmap.Config.RGB_565;opt.inPurgeable true;opt.inInputShareable true;InputStream is context.getResources().openRawResource(resId);return BitmapFactory.decodeStream(is, null, opt);}}2AsyncTask异步多线程AsyncTask的规范型很强能够时时反映更新的情况它一般有这么几个方法* onPreExecute(), 该方法将在执行实际的后台操作前被UI 线程调用。可以在该方法中做一些准备工作如在界面上显示一个进度条或者一些控件的实例化这个方法可以不用实现。* doInBackground(Params...), 将在onPreExecute 方法执行后马上执行该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台处理工作。可以调用 publishProgress方法来更新实时的任务进度。该方法是抽象方法子类必须实现。* onProgressUpdate(Progress...),在publishProgress方法被调用后UI 线程将调用这个方法从而在界面上展示任务的进展情况例如通过一个进度条进行展示。* onPostExecute(Result), 在doInBackground 执行完成后onPostExecute 方法将被UI 线程调用后台的计算结果将通过该方法传递到UI 线程并且在界面上展示给用户.* onCancelled(),在用户取消线程操作的时候调用。在主线程中调用onCancelled()的时候调用。为了正确的使用AsyncTask类以下是几条必须遵守的准则1) Task的实例必须在UI 线程中创建2) execute方法必须在UI 线程中调用3) 不要手动的调用onPreExecute(), onPostExecute(Result)doInBackground(Params...), onProgressUpdate(Progress...)这几个方法需要在UI线程中实例化这个task来调用。4) 该task只能被执行一次否则多次调用时将会出现异常package com.android.wei.thread;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class Activity02 extends Activity{/**开始StartAsync按钮**/Button mButton null;Context mContext null;//内容显示出来TextView mTextView null;//Timer 对象Timer mTimer null;/** timerTask 对象**/TimerTask mTimerTask null;/**记录TimerId**/int mTimerId 0;/**图片列表**/private List list;/**图片容器**/private ImageView mImageView;public void onCreate(Bundle s){super.onCreate(s);setContentView(R.layout.main);mContext this;mButton (Button) this.findViewById(R.id.button1);mImageView (ImageView)this.findViewById(R.id.imageview);mTextView (TextView) this.findViewById(R.id.textView1);mButton.setOnClickListener(new OnClickListener(){public void onClick(View v){StartAsync();}});}public void StartAsync(){new AsyncTask(){protected void onPreExecute(){//首先执行这个方法它在UI线程中可以执行一些异步操作mTextView.setText(开始加载进度);super.onPreExecute();}Overrideprotected Object doInBackground(Object... params) {// TODO Auto-generated method stub//异步后台执行执行完毕可以返回出去一个结果 Object 对象//得到开始加载得时间list new ArrayList();for(int i 0;i100;i){Bitmap bitmap ReadBitmap(mContext,R.drawable.icon);final ByteArrayOutputStream os new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);byte[] image os.toByteArray();Bundle bundle new Bundle();bundle.putInt(index, i);bundle.putByteArray(image, image);publishProgress(bundle);list.add(bitmap);}return list;}protected void onPostExecute(Object result){//doInBackground 执行之后在这里可以接受到返回结果的对象List list (List) result;mTextView.setText(一共加载了list.size()张图片);super.onPostExecute(result);}protected void onProgressUpdate(Object... values){//时时拿到当前的进度更新UIBundle bundle (Bundle)values[0];byte[] image bundle.getByteArray(image);Bitmap bitmap BitmapFactory.decodeByteArray(image, 0, image.length);int index bundle.getInt(index);mTextView.setText(当前加载进度index);mImageView.setImageBitmap(bitmap);super.onProgressUpdate(values);}}.execute();}public Bitmap ReadBitmap(Context context,int resId){BitmapFactory.Options opt new BitmapFactory.Options();opt.inPreferredConfig Bitmap.Config.RGB_565;opt.inPurgeable true;opt.inInputShareable true;InputStream is context.getResources().openRawResource(resId);return BitmapFactory.decodeStream(is, null, opt);}}3TimerTask可以根据我们的设置来间隔性的运行可以很好的实现监听功能一般也跟handler一起package com.android.wei.thread;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class TimerTaskActivity extends Activity{/**执行Timer进度**/public final static int LOAD_PROGRESS 0;/**关闭TImer进度**/public final static int CLOSE_PROGRESS 1;/**开始TIMERTASK按钮**/Button mButton0 null;/**关闭TIMERTASK按钮**/Button mButton1 null;/**显示内容**/TextView mTextView null;Context mContext null;/**timer对象**/Timer mTimer null;/**TimerTask对象**/TimerTask mTimerTask null;/**记录TimerID**/int mTimerID 0;Handler handler new Handler(){public void handleMessage(Message msg){switch(msg.what){case LOAD_PROGRESS:mTextView.setText(当前得TimerID为msg.arg1);break;case CLOSE_PROGRESS:mTextView.setText(当前Timer已经关闭请重新启动);break;}super.handleMessage(msg);}};protected void onCreate(Bundle s){setContentView(R.layout.timer);mContext this;mButton0 (Button) this.findViewById(R.id.button1);mButton1 (Button) this.findViewById(R.id.button2);mTextView (TextView) this.findViewById(R.id.textView1);mTextView.setText(点击按钮开始更新时间);mButton0.setOnClickListener(new OnClickListener(){public void onClick(View v){StartTimer();}});mButton1.setOnClickListener(new OnClickListener(){public void onClick(View v){CloseTimer();}});super.onCreate(s);}public void StartTimer(){if(mTimer null){mTimerTask new TimerTask(){Overridepublic void run() {mTimerID ;Message msg new Message();msg.what LOAD_PROGRESS;msg.arg1 (int) (mTimerID);handler.sendMessage(msg);}};mTimer new Timer();//第一个参数为执行的mTimerTask//第二个参数为延迟得事件这里写1000得意思是 mTimerTask将延迟1秒执行//第三个参数为多久执行一次这里写1000 表示没1秒执行一次mTimerTask的Run方法mTimer.schedule(mTimerTask, 1000,1000);}}public void CloseTimer(){if(mTimer !null){mTimer.cancel();mTimer null;}if(mTimerTask! null){mTimerTask null;}mTimerID 0;handler.sendEmptyMessage(CLOSE_PROGRESS);}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909976.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!