今天做了个小试验,想验证下接收广播是否在主线程,经验证是在主线程
代码如下:
package com.example.testbroadcast; import android.R.integer; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { public static final String CONNECTIVITY_CHANGE_ACTION ="android.net.conn.CONNECTIVITY_CHANGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(); filter.addAction(CONNECTIVITY_CHANGE_ACTION); registerReceiver(new IntentReceiver(), filter); Log.d("Luo", "onCreate " + Thread.currentThread().getName()); test(); } public void test () { int i = 0; while(i < 5) { try { Thread.currentThread().sleep(1000); Log.d("Luo", "onCreate " + Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } i++; } } class IntentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("Luo", "onReceive " + Thread.currentThread().getName() + "000000000000000000000000000000"); } } } 并且是要等主线程运行完后,才执行onReceive函数();