android开发 用线程进行耗时操作,统一处理 第二版
来源:互联网 发布:js控制视频进度条 编辑:程序博客网 时间:2024/05/18 15:29
修改了部分代码,现在可以加载 public , private , protected 修饰的方法,Util 中仅开启了一个单线程去循环读取队列中的值,有就执行,没有就sleep.
贴代码
MainActivity
package com.bjj.test_thread_step;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.start).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addAll(); } }); } private void addAll(){ ThreadUtil.getInstance().addIntoThread("step1",MainActivity.this); ThreadUtil.getInstance().addIntoThread("step2",MainActivity.this); ThreadUtil.getInstance().addIntoThread("step3",MainActivity.this); ThreadUtil.getInstance().addIntoThread("step4",MainActivity.this); } public void step1(){ runOnUiThread(new Runnable() { @Override public void run() { ((TextView) findViewById(R.id.t1)).setText("这是第一步"); } }); } private void step2(){ runOnUiThread(new Runnable() { @Override public void run() { ((TextView) findViewById(R.id.t2)).setText("这是第二步"); } }); } protected void step3(){ runOnUiThread(new Runnable() { @Override public void run() { ((TextView) findViewById(R.id.t3)).setText("这是第三步"); } }); } public void step4(){ runOnUiThread(new Runnable() { @Override public void run() { ( (TextView)findViewById(R.id.t4) ).setText("这是第四步"); } }); }}
MyClass
package com.bjj.test_thread_step;/** * Created by Administrator on 2016/4/19. */public class MyClass { public String methodName; public Object object;}
package com.bjj.test_thread_step;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * Created by Administrator on 2016/4/18. */public class ThreadUtil { private ExecutorService services; public static ThreadUtil thread; private ArrayList<MyClass> classes; public static ThreadUtil getInstance(){ if(thread == null){ thread = new ThreadUtil(); } return thread; } public ThreadUtil(){ services = Executors.newSingleThreadExecutor(); classes = new ArrayList<MyClass>(); services.execute(main_Runnable); } public void addIntoThread(String methodName,Object _class){ MyClass c = new MyClass(); c.methodName = methodName; c.object = _class; classes.add(c); } public void runMethod(String methodName,final Object _class){ Method method = null; try { //获取public方法 method = _class.getClass().getMethod(methodName); } catch (NoSuchMethodException e) { try { //获取非public方法 method = _class.getClass().getDeclaredMethod(methodName); } catch (NoSuchMethodException e1) { } } if(method == null){ return; } try { method.setAccessible(true); method.invoke(_class); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } private Runnable main_Runnable = new Runnable() { @Override public void run() { while(true){ if(classes != null && classes.size() > 0){ runMethod(classes.get(0).methodName,classes.get(0).object); classes.remove(0); } else{ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } };}
0 0
- android开发 用线程进行耗时操作,统一处理 第二版
- android开发 用线程进行耗时操作,统一处理
- Android中启动线程来进行耗时操作
- AsyncTask 使用后台线程处理耗时操作
- android 开启线程查询数据,耗时操作
- Android开发中的耗时操作总结
- Broadcast Receiver开启服务而不是子线程处理耗时操作
- Broadcast Receiver开启服务而不是子线程处理耗时操作
- BroadcastReceiver处理耗时操作
- Swift-处理耗时操作
- 回调 处理耗时操作
- 禁止在窗口界面线程中进行线程同步或进行耗时的操作。。。
- Android中处理耗时操作的方法有哪些?
- Android中如何处理耗时操作,AsyncTask有什么不足之处.
- Android开发-线程和线程消息处理-常用操作
- Android开发中的异常统一处理
- IntentService可处理耗时操作
- 【Android 开发教程】在服务中执行耗时操作
- Annotation
- 跑偏程序员自学cocos2d-x之一 创建工程
- 外观模式
- wxWidgets学习笔记(5)- wxTextCtrl
- 【Spring实战】—— 13 AspectJ注解切面
- android开发 用线程进行耗时操作,统一处理 第二版
- 机器学习入门----以阿里移动推荐算法大赛为例
- long long超时了,而换成int变成ac了
- so汉化心得
- java多线程问题(上)
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- 理解Thread.Sleep()
- Android中Java和JavaScript交互
- 51nod 1060 最复杂的数(反素数)