Android 中 ActivityLifecycleCallbacks的实例详解
以上就是使用ActivityLifecycleCallbacks的实例,代码注释写的很清楚大家可以参考下,
MyApplication如下:
package com.cc;
import java.util.linkedList;
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
public class MyApplication extends Application {
private static int activityCounter=0;
private static MyApplication mApplicationInstance;
private static linkedList mActivitylinkedList;
private ActivityLifecycleCallbacksImpl mActivityLifecycleCallbacksImpl;
@Override
public void onCreate() {
super.onCreate();
mApplicationInstance=new MyApplication();
mActivitylinkedList=new linkedList();
mActivityLifecycleCallbacksImpl=new ActivityLifecycleCallbacksImpl();
this.registerActivityLifecycleCallbacks(mActivityLifecycleCallbacksImpl);
}
public static MyApplication getInstance() {
if (null==mApplicationInstance) {
mApplicationInstance=new MyApplication();
}
return mApplicationInstance;
}
//判断App是否在后台运行
public boolean isAppRunningBackground(){
boolean flag=false;
if(activityCounter==0){
flag=true;
}
return flag;
}
//退出应用
public void finishAllActivity(){
//unregisterActivityLifecycleCallbacks(mActivityLifecycleCallbacksImpl);
System.out.println("--> mActivitylinkedList.size()="+mActivitylinkedList.size());
if(null!=mActivitylinkedList){
for(Activity activity:mActivitylinkedList){
if(null!=activity){
activity.finish();
}
}
}
}
private class ActivityLifecycleCallbacksImpl implements ActivityLifecycleCallbacks{
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
System.out.println("onActivityCreated --> "+activity.getClass().getName());
if (null!=mActivitylinkedList&&null!=activity) {
mActivitylinkedList.addFirst(activity);
}
}
@Override
public void onActivityStarted(Activity activity) {
activityCounter++;
System.out.println("onActivityStarted --> "+activity.getClass().getName()+",activityCounter="+activityCounter);
}
@Override
public void onActivityResumed(Activity activity) {
System.out.println("onActivityResumed --> "+activity.getClass().getName());
}
@Override
public void onActivityPaused(Activity activity) {
System.out.println("onActivityPaused --> "+activity.getClass().getName());
}
@Override
public void onActivityStopped(Activity activity) {
activityCounter--;
System.out.println("onActivityStopped --> "+activity.getClass().getName()+",activityCounter="+activityCounter);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
System.out.println("onActivitySaveInstanceState --> "+activity.getClass().getName());
}
@Override
public void onActivityDestroyed(Activity activity) {
System.out.println("onActivityDestroyed --> "+activity.getClass().getName());
if (null!=mActivitylinkedList&&null!=activity) {
if (mActivitylinkedList.contains(activity)) {
mActivitylinkedList.remove(activity);
}
}
}
}
}
FirstActivity如下:
package com.cc;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class FirstActivity extends Activity {
private Context mContext;
private Button mOpenNewActivityButton;
private Button mFinishThisActivityButton;
private ClickListenerImpl mClickListenerImpl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_activity);
init();
}
private void init(){
mContext=this;
mClickListenerImpl=new ClickListenerImpl();
mOpenNewActivityButton=(Button) findViewById(R.id.openNewActivityButton);
mOpenNewActivityButton.setonClickListener(mClickListenerImpl);
mFinishThisActivityButton=(Button) findViewById(R.id.finishThisActivityButton);
mFinishThisActivityButton.setonClickListener(mClickListenerImpl);
}
private class ClickListenerImpl implements onClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.openNewActivityButton:
Intent intent=new Intent(mContext, SecondActivity.class);
startActivity(intent);
break;
case R.id.finishThisActivityButton:
finish();
break;
default:
break;
}
}
}
@Override
protected void onResume() {
super.onResume();
//System.out.println(" first Activity onResume --> "+MyApplication.getInstance().isAppRunningBackground());
}
@Override
protected void onStop() {
super.onStop();
//System.out.println(" first Activity onStop --> "+MyApplication.getInstance().isAppRunningBackground());
}
}
SecondActivity如下:
package com.cc;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SecondActivity extends Activity {
private Context mContext;
private Button mOpenNewActivityButton;
private Button mFinishThisActivityButton;
private ClickListenerImpl mClickListenerImpl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
init();
}
private void init(){
mContext=this;
mClickListenerImpl=new ClickListenerImpl();
mOpenNewActivityButton=(Button) findViewById(R.id.openNewActivityButton);
mOpenNewActivityButton.setonClickListener(mClickListenerImpl);
mFinishThisActivityButton=(Button) findViewById(R.id.finishThisActivityButton);
mFinishThisActivityButton.setonClickListener(mClickListenerImpl);
}
private class ClickListenerImpl implements onClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.openNewActivityButton:
Intent intent=new Intent(mContext, ThirdActivity.class);
startActivity(intent);
break;
case R.id.finishThisActivityButton:
finish();
break;
default:
break;
}
}
}
}
ThirdActivity如下:
package com.cc;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ThirdActivity extends Activity {
private Context mContext;
private Button mFinishAllActivityButton;
private Button mFinishThisActivityButton;
private ClickListenerImpl mClickListenerImpl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third_activity);
init();
}
private void init(){
mContext=this;
mClickListenerImpl=new ClickListenerImpl();
mFinishThisActivityButton=(Button) findViewById(R.id.finishThisActivityButton);
mFinishThisActivityButton.setonClickListener(mClickListenerImpl);
mFinishAllActivityButton=(Button) findViewById(R.id.finishAllActivityButton);
mFinishAllActivityButton.setonClickListener(mClickListenerImpl);
}
private class ClickListenerImpl implements onClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.finishThisActivityButton:
finish();
break;
case R.id.finishAllActivityButton:
MyApplication.getInstance().finishAllActivity();
break;
default:
break;
}
}
}
@Override
protected void onResume() {
super.onResume();
//System.out.println(" third Activity onResume --> "+MyApplication.getInstance().isAppRunningBackground());
}
@Override
protected void onStop() {
super.onStop();
//System.out.println(" third Activity onStop --> "+MyApplication.getInstance().isAppRunningBackground());
}
@Override
protected void onDestroy() {
super.onDestroy();
//System.out.println(" third Activity onDestroy --> "+MyApplication.getInstance().isAppRunningBackground());
}
}
first_activity.xml如下:
second_activity.xml如下:
third_activity.xml如下:
AndroidManifest.xml如下:
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



