android中activity1和activity2中接收定时消息
android中activity1和activity2中接收定时消息
业务类
import java.util.Timer;
import java.util.TimerTask;
public class MyAnager {
private MyAnager() {
}
private static MyAnager instance;
//回调接口onRecvTask
public interface OnMsgListener {
void onRecvTask(String authId);
}
public void setOnMsgListener(OnMsgListener listener) {
this.mOnMsgListener = listener;
}
private OnMsgListener mOnMsgListener;
//实例
public static MyAnager get() {
if (instance == null) {
synchronized (MyAnager.class) {
if (instance == null) {
instance = new MyAnager();
}
}
}
return instance;
}
//定时
public void time(){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (mOnMsgListener != null) {
mOnMsgListener.onRecvTask("你好");
}
}
}, 3000, 3000); // 初始延迟 3 秒,周期 3 秒
}
//初始定时方法
public void intnListener() {
time();
}
}
启动发消息
public class MyApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
MyAnager.get().intnListener();
}
}
ativity1中接收消息
public class LoginActivity extends AppCompatActivity implements MyAnager.OnMsgListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
MyAnager.get().setOnMsgListener(LoginActivity.this);
TextView tvJump = findViewById(R.id.activity_login);
tvJump.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, LoginActivity2.class);
startActivityForResult(intent, 1);
}
});
}
@Override
public void onRecvTask(String xx) {
BaseUtil.d("=======LoginActivity1========="+xx);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
MyAnager.get().setOnMsgListener(LoginActivity.this);
}
}
ativity2中接收消息
public class LoginActivity2 extends AppCompatActivity implements MyAnager.OnMsgListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login2);
MyAnager.get().setOnMsgListener(LoginActivity2.this);
}
@Override
public void onRecvTask(String xx) {
BaseUtil.d("=======LoginActivity2========="+xx);
}
}
ativity1和ativity2初始化的时候都要注册监听并且回调监听。ativity1跳转到ativity2,从ativity2跳转到ativity1的时,ativity1的onActivityResult方法要重新注册。