Handler注意点-不使用what为0的Message
使用Handler post的Runnable的what值是0。
在移除message what 0的message的时候并不会判断runnable的值,只要what值相同就会被移除,所以会把所有的Runnable都移除掉。
例如下边代码:
public class MainActivity extends AppCompatActivity { private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("test", "start"); handler.post(new Runnable() { @Override public void run() { Log.i("test", "runnable 1"); } }); handler.postDelayed(new Runnable() { @Override public void run() { Log.i("test", "runnable 2"); } }, 100); handler.removeMessages(0); Log.i("test", "end"); } }
输出如下:
03-16 03:34:02.326 I/test ( 2517): start
03-16 03:34:02.326 I/test ( 2517): end