IntentService AsyncTask,Thread
2015-09-09 20:21
225 查看
IntentService
1、在manifest.xml中声明</activity> <service android:name=".MyService"></service> <service android:name=".MyIntentService"></service> </application>
2、MyIntentService类
public class MyIntentService extends IntentService { public MyIntentService(String name) { super(name); } public MyIntentService() { this(""); } @Override public void onDestroy() { super.onDestroy(); Log.d("","服务关闭"); } @Override protected void onHandleIntent(Intent intent) { Log.d("","运行到IntentService"); int count = 0; while (true){ if(count>=100){ count=0; } count++; Intent intent1 = new Intent(); intent1.setAction(MainActivity.DOWN_LOAD_ACTION); intent1.putExtra("count", count); sendBroadcast(intent1); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } } }
3、activity中
//注册receiver receiver = new MyDownloadReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(DOWN_LOAD_ACTION); registerReceiver(receiver,filter); //点击事件 case R.id.button_stop: Intent intent1 = new Intent(getApplicationContext(),MyIntentService.class); stopService(intent1); break; case R.id.button_download: Intent intent = new Intent(getApplicationContext(),MyIntentService.class); startService(intent); break; default: break; } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); } class MyDownloadReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { int count = intent.getIntExtra("count",0); mProgressbar.setProgress(count); } }
AsyncTask
public class MainActivity extends Activity { private Button mButton; private ProgressBar mProgressbar; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button) findViewById(R.id.button); mProgressbar = (ProgressBar) findViewById(R.id.progressBar); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyTask task = new MyTask(); task.execute("开始执行吧"); } }); } class MyTask extends AsyncTask<String, String, String> { @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); int count = Integer.parseInt(values[0]); mProgressbar.setProgress(count); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); mButton.setText(s); } @Override protected String doInBackground(String... params) { while (count < 101) { count++; publishProgress("" + count); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } return "已经全部完成"; } } }
Thread
1、倒计时private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case TIME_DESC: String time = (String) msg.obj; mButton.setText(time); break; case TIME_DESC: count--; mButton.setText(count+"秒"); if(count>0) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(TIME_DESC); } break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); message = new Message(); mButton = (Button) findViewById(R.id.button_desc); mButton2 = (Button) findViewById(R.id.button_send); mButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handler.sendEmptyMessage(0); } }); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { count = 60; handler.sendEmptyMessage(TIME_DESC); new Thread(new Runnable() { @Override public void run() { while (count>0){ count--; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Message msg = new Message(); msg.obj = count+"秒"; msg.what= TIME_DESC; handler.sendMessage(msg); } } }).start(); } }); }
2、用handler封装, looper.prepare
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); message = new Message(); mButton = (Button) findViewById(R.id.button_desc); mButton2 = (Button) findViewById(R.id.button_send); mButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handler.sendEmptyMessage(0); } }); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { count = 60; MyThread thread = new MyThread(); thread.start(); } }); } private Handler handler; class MyThread extends Thread { @Override public void run() { Looper.prepare(); handler = new Handler(){ @Override public void handleMessage(Message msg) { Log.d("hand","接收到主线程发送过来的消息"); } }; Looper.loop(); } } }
相关文章推荐
- Vs2013 坑爹的Target framework问题
- IOS NSFileHandle 基本用法
- C++函数调用之thiscall
- 转 :asp教程.net c#数组遍历、排序、删除元素、插入、随机元素 数组遍历
- 总结一下最近整合spring4和hibernate4遇到的问题
- 天眼
- Oracle 学习之 性能优化(十二) 分区表
- Android用Gson解析JSON字符串
- java web学习心得与总结(1)——jsp基本语法
- Android用Gson解析JSON字符串
- 第2周项目1-C/C++语言中函数参数传递的三种方式
- Shell笔记
- 找一个二叉树的最大路径和
- 软件设计杂谈<一>
- Hdu 2795 线段树的运用
- 死锁问题调试-思路分析
- 将字符串按倒序进行排序 Collections.reverseOrder()
- zkw费用流模板(适用二分图)
- 播放多媒体文件的类——Mediaplayer
- Redis系列-存储篇list主要操作函数小结(转)