`
earon
  • 浏览: 18833 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Activity 生命周期实例

阅读更多
Android平台上的软件普遍的起始界面都是一个欢迎界面,我们看到的可能仅仅只是一张图片或是一些动画效果。随后才加载登录页面或是主菜单页面,但是在我们用手机打开一些Android程序的时候就会发现,如果我们的手机没有连入网络的时候,有些程序就会提示“当前网络不可用”或是“请检查您的网络”之类的提示框。原因就是因为在这些程序的欢迎界面启动的时候去检查了你当前手机的网络状态。并给予对应的提示,但是据我本人一些程序使用体验中发现,大多数程序的欢迎界面检查了手机的网络状况,提示框有一个确定按钮,当你点击确定按钮之后,程序也退出了。所以在最近的一个项目中,我也想在项目欢迎界面中加入这样的效果,但是不知道其他程序是怎么实现的,后来自己摸索了下,想出了一个解决方案。就是利用Activity生命周期来实现。在此记录分享下,也希望大家也分享下自己的实现思路。

我是用真机测试的。
1 新建一个android工程,
新建布局文件,welcome.xml
然后新增一个activity,命名为WelcomeActivity
当然还有一张欢迎界面的图片welcome.png,设置welcome的background为welcome.png,并在Androidmanifest中设置
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
这行代码是实现全屏及隐藏标题栏

2 大家都知道Activity的生命周期(如果不是很熟悉的话可以查找相关资料),当一个Activity启动的时候,首先是执行onCreate()方法,再是onStart()方法,至此界面就呈现出来了。

定义一个检查网络状况的方法 如下:
private boolean CheckNetWork(Activity activity){
ConnectivityManager manager = (ConnectivityManager)activity.getSystemService(Context.CONNECTIVITY_SERVICE);
//检查网络
NetworkInfo info = manager.getActiveNetworkInfo();
if(info==null || !info.isConnected()){
return false;
}
if(info.isRoaming()){
return true;
}
return true;
}

3 并在onStart()方法中调用,如下:
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "ActivityLifeCycle==>onStart");
if(!CheckNetWork(this)){
AlertDialog.Builder builder = new Builder(LogoActivity.this);
builder.setInverseBackgroundForced(true);
builder.setMessage("当前网络不可用,是否自动前往设置当前网络").setPositiveButton("是",new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
}).setNegativeButton("否",new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
WelcomeActivity.this.finish();
}
});
AlertDialog ad = builder.create();
ad.show();
}
else{
                        //网络正常,进入主界面
}
}

4 注意:startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));这句话的意思是跳转到设置无线和网络面板。当网络不可用时,可以让用户可以直接跳转到网络设置界面,进行网络设置。当然也可以不设置网络,退出程序。

需要注意的是跳转到设置面板是需要权限的。将下面这行代码
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
添加到AndroidManifest.xml中即可

5 下面说下这个实例的activity的生命周期过程吧
【1】 最开始启动程序=>onCreate();
【2】 执行onStart()方法调用网络检查。用户点击是直接跳到无线和网络设置面板。
【3】 此时,activity 会依次调用onResume(),onPause(),onStop()方法。
【4】 用户设置好网络后,按返回按钮。即回来了我们的Android程序(因为我们的程序没有被Destroyed掉)。
【5】 此刻activity会依次调用onRestart(),onStart(),onResume()。
【6】 此刻里面有两个方法是被重复调用了,就是onStart()和onResume()方法。所以我选择在这两个方法中做网络检查判断处理。

当然最后我想通过这个思路还可以在欢迎界面做一些其他的处理。就看需求了。

最后总结下,其实就是一个欢迎界面做网络状态检查的功能,加上本人用户体验感觉的修改。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics