这里我介绍一个方法还不错展示广告方式,(最近忙着游戏的开发,应用上的都有点淡忘了)。
这里我主要运用了ActivityLifecycleCallbacks监听生命周期,以及application的生命周期是整个程序运行这一特性入手的。
话不多说展示代码
ublic class MyApplication extends Application {
private static final String TAG = "MyApplication";
private static boolean mIsBackground = false;
//声明一个监听Activity们生命周期的接口
private ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//如何区别参数中activity代表你写的哪个activity。
if (activity.getClass() == MainActivity.class)
Log.d(TAG, "MainActivityCreated.");
else if(activity.getClass()== SecondActivity.class)
Log.d(TAG, "SecondActivityCreated.");
}
@Override
public void onActivityStarted(Activity activity) {
Log.d(TAG, "onActivityStarted.");
}
/**
* application下的每个Activity声明周期改变时,都会触发以下的函数。
*/
//模拟展示广告
protected void dialog(final Activity activity) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("展示广告");
builder.setTitle("提示");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
@Override
public void onActivityResumed(Activity activity) {
Log.d(TAG, "onActivityResumed.");
if (mIsBackground){
mIsBackground = false;
Log.d(TAG, "onTrimMemory app从后台进入前台");
dialog(activity);
}
}
@Override
public void onActivityPaused(Activity activity) {
Log.d(TAG, "onActivityPaused.");
}
@Override
public void onActivityStopped(Activity activity) {
Log.d(TAG, "onActivityStopped.");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.d(TAG, "onActivityDestroyed.");
}
};
/**
* onCreate是一个回调接口,android系统会在应用程序启动的时候,在任何应用程序组件(activity、服务、
* 广播接收器和内容提供者)被创建之前调用这个接口。
* 需要注意的是,这个方法的执行效率会直接影响到启动Activity等的性能,因此此方法应尽快完成。
* 最后在该方法中,一定要记得调用super.onCreate(),否则应用程序将会报错。
*/
@Override
public void onCreate() {
super.onCreate();
//注册自己的Activity的生命周期回调接口。
registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
}
@Override
public void onTerminate() {
// 程序终止的时候执行
Log.d(TAG, "onTerminate");
//注销这个接口。
unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);
super.onTerminate();
}
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if(level == TRIM_MEMORY_UI_HIDDEN){
mIsBackground = true;
Log.d(TAG, "onTrimMemory app退出到后台");
}
}
}
这里我们用到了
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if(level == TRIM_MEMORY_UI_HIDDEN){
mIsBackground = true;
Log.d(TAG, "onTrimMemory app退出到后台");
}
}
onTrimMemory()方法中的TRIM_MEMORY_UI_HIDDEN回调只有当我们程序中的所有UI组件全部不可见的时候才会触发
然后判断是正常跳转还是后台返回回来的,
试试还不错(-。-)
下面的跟本次博客没关系 哈哈,自己写的用的(计时器)
timer.start();
private CountDownTimer timer = new CountDownTimer(5000, 1000) {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onTick(long millisUntilFinished) {
// mBtnGetVerCode.setText("剩(" + (millisUntilFinished / 1000) + "s)");
text_jishi.setText(millisUntilFinished / 1000+"");
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onFinish() {
Intent mainIntent = new Intent(ADActivity.this, MainActivity.class);
ADActivity.this.startActivity(mainIntent);
ADActivity.this.finish();
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if (null != timer) {
timer.cancel();
}
}
“`