1 LifeCycleAware
import android.app.Activity;
import java.util.LinkedList;
import java.util.List;
public class LifeCycleAware {
private boolean started;
private boolean resumed;
private boolean destroyed;
private List<Listener> listenerList = new LinkedList<>();
private Activity activity;
public LifeCycleAware() {
}
public LifeCycleAware(Activity activity) {
this.activity = activity;
}
public boolean isStarted() {
return started;
}
public boolean isResumed() {
return resumed;
}
public boolean isFinished() {
if (activity == null) {
return destroyed;
}
return activity.isFinishing();
}
public boolean isDestroyed() {
return destroyed;
}
public void onStart() {
started = true;
for (Listener listener : listenerList) {
listener.onStart();
}
}
public void onStop() {
started = false;
for (Listener listener : listenerList) {
listener.onStop();
}
}
public void onResume() {
resumed = true;
for (Listener listener : listenerList) {
listener.onResume();
}
}
public void onPause() {
resumed = false;
for (Listener listener : listenerList) {
listener.onPause();
}
}
public void onDestroy() {
destroyed = true;
for (Listener listener : listenerList) {
listener.onDestroy();
}
}
public void addListener(Listener listener) {
listenerList.add(listener);
}
public void removeListener(Listener listener) {
listenerList.remove(listener);
}
public void setActivity(Activity activity) {
this.activity = activity;
}
public static abstract class Listener {
public void onDestroy() {
}
public void onResume() {
}
public void onPause() {
}
public void onStart(){
}
public void onStop(){
}
}
}
2 BaseActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class BaseActivity extends AppCompatActivity {
public LifeCycleAware lifeCycleAware;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lifeCycleAware=new LifeCycleAware(this);
}
@Override
protected void onStart() {
super.onStart();
lifeCycleAware.onStart();
}
@Override
protected void onResume() {
super.onResume();
lifeCycleAware.onResume();
}
@Override
protected void onPause() {
super.onPause();
lifeCycleAware.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
lifeCycleAware.onDestroy();
}
public LifeCycleAware getLifeCycleAware() {
return lifeCycleAware;
}
}
3 DemoHelper
import android.content.Context;
public class DemoHelper {
private Context context;
private LifeCycleAware lifeCycleAware;
public DemoHelper(Context context,LifeCycleAware lifeCycleAware){
this.context=context;
this.lifeCycleAware=lifeCycleAware;
init();
}
private void init() {
lifeCycleAware.addListener(new LifeCycleAware.Listener() {
@Override
public void onDestroy() {
super.onDestroy();
lifeCycleAware.removeListener(this);//具体remove时机自己把握
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
});
}
}
4 使用
import android.os.Bundle;
public class MainActivity extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DemoHelper demoHelper=new DemoHelper(this,getLifeCycleAware());
}
}