android中activity1和activity2中接收定時消息
業務類
import java.util.Timer;
import java.util.TimerTask;public class MyAnager {private MyAnager() {}private static MyAnager instance;//回調接口onRecvTaskpublic 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() {@Overridepublic void run() {if (mOnMsgListener != null) {mOnMsgListener.onRecvTask("你好");}}}, 3000, 3000); // 初始延遲 3 秒,周期 3 秒}//初始定時方法public void intnListener() {time();}}
啟動發消息
public class MyApplication extends MultiDexApplication {@Overridepublic void onCreate() {super.onCreate();MyAnager.get().intnListener();}
}
ativity1中接收消息
public class LoginActivity extends AppCompatActivity implements MyAnager.OnMsgListener {@Overrideprotected 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() {@Overridepublic void onClick(View v) {Intent intent = new Intent(LoginActivity.this, LoginActivity2.class);startActivityForResult(intent, 1);}});}@Overridepublic void onRecvTask(String xx) {BaseUtil.d("=======LoginActivity1========="+xx);}@Overrideprotected 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{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login2);MyAnager.get().setOnMsgListener(LoginActivity2.this);}@Overridepublic void onRecvTask(String xx) {BaseUtil.d("=======LoginActivity2========="+xx);}}
ativity1和ativity2初始化的時候都要注冊監聽并且回調監聽。ativity1跳轉到ativity2,從ativity2跳轉到ativity1的時,ativity1的onActivityResult方法要重新注冊。