安卓如何在Service、BroadCast、Application中回调Activity

1. 定义接口

public interface NetEvevt {
    public void onNetChange(int netMobile);
}

2. 实现回调接口

public class MainActivity extends AppCompatActivity implements NetEvevt{
    // 定义静态变量
    public static NetEvevt evevt;
    CustomerReceiver customerReceiver=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 赋值给变量
        evevt=this;
        if(customerReceiver==null){
            customerReceiver=new CustomerReceiver();
            IntentFilter filter = new IntentFilter("com.denganzhi.greendao.CustomerReceiver.action");
            registerReceiver(customerReceiver, filter);
        }
    }
    // 实现接口,重写方法
    @Override
    public void onNetChange(int netMobile) {
        Toast.makeText(MainActivity.this,"netMobile:"+netMobile,Toast.LENGTH_SHORT).show();
    }

    public void methodClick(View view){
        Intent intent = new Intent("com.denganzhi.greendao.CustomerReceiver.action");
        sendBroadcast(intent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        if(customerReceiver!=null){
            unregisterReceiver(customerReceiver);
            customerReceiver=null;
        }
    }
}

3. 广播发送

public class CustomerReceiver extends BroadcastReceiver {

    public NetEvevt evevt = MainActivity.evevt;


    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
   //     Toast.makeText(context,"收到",Toast.LENGTH_LONG).show();
        // 获取实现方法的类,调用方法
        if(evevt!=null){
            evevt.onNetChange(110);
        }

    }

    // 自定义接口
//    public interface NetEvevt {
//        public void onNetChange(int netMobile);
//    }

}
发布了141 篇原创文章 · 获赞 51 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/dreams_deng/article/details/88951756