安卓handler使用(不使用Message与没有复写Handler)
2018-02-27 21:01
405 查看
安卓handler使用(不使用Message与没有复写Handler)
安卓handler使用不使用Message与没有复写Handler使用handler随机显示图片
2秒后只运行一次
开始后3秒换图片之后就2秒后换
算是一种错误的写法
使用handler随机显示图片
2秒后只运行一次
下面的例子中只随机显示一次package com.linyb.timer; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import java.util.Random; public class MainActivity extends AppCompatActivity { ImageView imageView; int[] ImageArray = new int[]{R.mipmap.aaa, R.mipmap.bbb, R.mipmap.ccc, R.mipmap.ic_launcher_round, R.mipmap.ic_launcher}; int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.image); final Random random = new Random(); final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { imageView.setImageResource(ImageArray[random.nextInt(5)]);//产生0-4的随机数,不包括5 ) Log.d("in handler", "run: 3"); } }, 2000); Log.d("not in handler", "run:out handler"); } }
开始后3秒换图片,之后就2秒后换
package com.linyb.timer; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import java.util.Random; public class MainActivity extends AppCompatActivity{ ImageView imageView; int[] ImageArray = new int[]{R.mipmap.aaa, R.mipmap.bbb, R.mipmap.ccc, R.mipmap.ic_launcher_round, R.mipmap.ic_launcher}; final Random random = new Random(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.image); final Handler handler2 = new Handler(); handler2.postDelayed(new Runnable() { @Override public void run() { handler2.postDelayed(this,2000); imageView.setImageResource(ImageArray[random.nextInt(5)]);//产生0-4的随机数,不包括5 ) } }, 3000); } }
算是一种错误的写法
package com.linyb.timer; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import java.util.Random; public class MainActivity extends AppCompatActivity{ ImageView imageView; int[] ImageArray = new int[]{R.mipmap.aaa, R.mipmap.bbb, R.mipmap.ccc, R.mipmap.ic_launcher_round, R.mipmap.ic_launcher}; final Handler handler2 = new Handler(); final Random random = new Random(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.image); handler2.postDelayed(new Runnable() { @Override public void run() { handler2.postDelayed(this,2000); imageView.setImageResource(ImageArray[random.nextInt(5)]);//产生0-4的随机数,不包括5 ) handler2.postDelayed(this,5000); Log.d("run", "run: "+handler2.toString()); } }, 3000); } //要加上不然返回键还在运行 @Override protected void onDestroy() { super.onDestroy(); System.exit(0); } }
会出现ANR,不过不确定出现ANR原因是不是因为下面这样解释
这种写法的后果是:运行后
3秒后设置
当前的handle为每2秒运行一次
并更改图片
再将
当前的handle为每2秒运行一次这个每5秒运行一次
跑久了后相当于handle是不停运行的,将出现
ANR
相关文章推荐
- 安卓 多线程、以及使用Handler发送、处理Message(新手笔记-10)
- 安卓多线程编程系列3:使用handler和message下载网络图片
- 【安卓笔记】Handler,Looper,MessageQueue,Message源码分析
- (转)Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- 从网络上面获得html数据以及 handler Message的使用形式
- 与多线程结合使用的消息处理类Handler、Message
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android 开发中的 Handler ,Thread ,Message ,Runnable 的综合使用方法
- Handler和Message的使用之一
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- 安卓基础之handler使用-->更新UI
- 安卓多线程编程系列7:使用Looper的不同方式(子线程中实例化Handler方式)
- 安卓 handler的使用 发送消息 , 接收消息(做相应的操作)
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android 开发中的 Handler ,Thread ,Message ,Runnable 的综合使用方法
- Handler,Looper,Message,MessageQueue,HandlerThread使用总结(上)
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- 安卓 Handler使用方法
- 安卓线程相关 HandlerThread Handler Thread Looper Message Runnable
- 安卓简历技术点之熟练使用Handler以及AsyncTask异步框架。