当前位置: 首页 > news >正文

电子政务网站建设实践报告我们高清中国免费观看

电子政务网站建设实践报告,我们高清中国免费观看,宣传品牌网站建设,知名网络公司有哪些活动的启动模式来说应该是个全新的概念#xff0c;在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式。启动模式一共有四种#xff0c;分别是standard、singleTop、singleTask 和singleInstance #xff0c; 可以在AndroidManifest.xml 中通过给activity… 活动的启动模式来说应该是个全新的概念在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式。启动模式一共有四种分别是standard、singleTop、singleTask 和singleInstance 可以在AndroidManifest.xml 中通过给activity 标签指定Android:launchMode属性来选择启动模式。 Standard标准模式.默认启动模式在不显式指定的情况下所有的活动都是使用这种模式每次都会创建新的活动实例 SingleTop栈顶复用模式。在启动活动时如果发现返回栈的栈顶已经是该活动则可以认为直接使用它不再创建新的活动实例 如果启动的活动处于任务栈中但不处于栈顶这个时候会重新创建该活动实例 SingleTask栈内复用模式。每次启动活动的时候都会检查返回栈中该活动是否已经存在若不存在则创建新的活动实例若存在则直接使用该活动并且处于该活动之上的活动实例全部出栈 SingleInstance单实例模式。若一个活动指定为该启动模式则会创建一个新的任务栈来管理此活动好处是方便别的应用程序可以调用我们这个活动当别的应用程序调用此活动时不必再重新创建该活动实例 下面我们来分别学习 一、 standard(标准启动模式) standard 是活动默认的启动模式在不进行显式指定的情况下所有活动都会自动使用这种启动模式。因此到目前为止我们写过的所有活动都是使用的standard 模式。经过上一节的学习你已经知道了Android 是使用返回栈来管理活动的在standard 模式即默认情况下每当启动一个新的活动它就会在返回栈中入栈并处于栈顶的位置。对于使用standard 模式的活动系统不会在乎这个活动是否已经在返回栈中存在每次启动都会创建该活动的一个新的实例。 我们现在通过实践来体会一下standard 模式修改FirstActivity 中onCreate()方法的代码如下所示 [java] view plaincopy public class MainActivity extends Activity {          Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.activity_main);                  Button button1  (Button)findViewById(R.id.button1);           Log.d(MainActivity, this.toString());              button1.setOnClickListener(new OnClickListener() {                              Override               public void onClick(View v) {                   // TODO Auto-generated method stub                   Intent intent  new Intent(MainActivity.this,MainActivity.class);                   startActivity(intent);               }           });       }   }   代码看起来有些奇怪吧在MainActivity 的基础上启动MainActivity。从逻辑上来讲这确实没什么意义不过我们的重点在于研究standard 模式因此不必在意这段代码有什么实际用途。另外我们还在onCreate()方法中添加了一行打印信息用于打印当前活动的实例。 现在重新运行程序然后在MainActivity 界面连续点击两次按钮可以看到LogCat 中打印信息 从打印信息中我们就可以看出每点击一次按钮就会创建出一个新的MainActivity 实例。此时返回栈中也会存在三个MainActivity的实例因此你需要连按三次Back键才能退出程序。 standard 模式的原理示意图如图所示 二、 singleTop(栈顶复用模式) 可能在有些情况下你会觉得standard 模式不太合理。活动明明已经在栈顶了为什么再次启动的时候还要创建一个新的活动实例呢别着急这只是系统默认的一种启动模式而已你完全可以根据自己的需要进行修改比如说使用singleTop 模式。当活动的启动模式指定为singleTop在启动活动时如果发现返回栈的栈顶已经是该活动则认为可以直接使用它不会再创建新的活动实例。 我们还是通过实践来体会一下修改AndroidManifest.xml 中MainActivity 的启动模式如下所示 [java] view plaincopy activity               android:namecn.com.qiang.singleTop.MainActivity               android:labelstring/app_name                android:launchModesingleTop               intent-filter                   action android:nameandroid.intent.action.MAIN /                      category android:nameandroid.intent.category.LAUNCHER /               /intent-filter   /activity   然后重运行程序查看LogCat 会看到已经创建了一个MainActivity 的实例如图所示。 但是之后不管你点击多少次按钮都不会再有新的打印信息出现因为目前MainActivity已经处于返回栈的栈顶每当想要再启动一个MainActivity 时都会直接使用栈顶的活动因此MainActivity 也只会有一个实例仅按一次Back 键就可以退出程序。 不过当MainActivity 并未处于栈顶位置时这时再启动MainActivity还是会创建新的实例的。下面我们来实验一下在MainActivity 中添加第二个按钮onCreate()方法的代码如下所示 [java] view plaincopy Button button2  (Button)findViewById(R.id.button2);   button2.setOnClickListener(new OnClickListener() {                      Override       public void onClick(View v) {       // TODO Auto-generated method stub       Intent intent  new Intent(MainActivity.this,SecondActivity.class);       startActivity(intent);       }   });   按钮功能是跳转到第二个界面下面修改SecondActivity [java] view plaincopy Log.v(MainActivity, this.toString());   Button button3  (Button)findViewById(R.id.button3);   button3.setOnClickListener(new OnClickListener() {                      Override       public void onClick(View v) {       // TODO Auto-generated method stub       Intent intent  new Intent(SecondActivity.this,MainActivity.class);       startActivity(intent);       }   });   我们在SecondActivity 中的按钮点击事件里又加入了启动MainActivity 的代码。现在重新运行程序在MainActivity 界面点击按钮进入到SecondActivity然后在SecondActivity 界面点击按钮又会重新进入到MainActivity。查看LogCat 中的打印信息如图所示 可以看到系统创建了两个不同的MainActivity 实例这是由于在SecondActivity 中再次启动MainActivity 时栈顶活动已经变成了SecondActivity因此会创建一个新的MainActivity实例。现在按下Back 键会返回到SecondActivity再次按下Back 键又会回到FirstActivity再按一次Back 键才会退出程序。 singleTop 模式的原理示意图如图2.34 所示。 三、singleTask 使用singleTop 模式可以很好地解决重复创建栈顶活动的问题但是正如你在上一节所看到的如果该活动并没有处于栈顶的位置还是可能会创建多个活动实例的。那么有没有什么办法可以让某个活动在整个应用程序的上下文中只存在一个实例呢这就要借助singleTask 模式来实现了。当活动的启动模式指定为singleTask每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例如果发现已经存在则直接使用该实例并把在这个活动之上的所有活动统统出栈如果没有发现就会创建一个新的活动实例。 由于其和singleTop类似这里不再详细介绍其特点。singleTask 模式的原理示意图 四、 singleInstance singleInstance 模式应该算是四种启动模式中最特殊也最复杂的一个了你也需要多花点功夫来理解这个模式。不同于以上三种启动模式指定为singleInstance 模式的活动会启用一个新的返回栈来管理这个活动其实如果singleTask 模式指定了不同的taskAffinity也会启动一个新的返回栈。那么这样做有什么意义呢想象以下场景假设我们的程序中有一个活动是允许其他程序调用的如果我们想实现其他程序和我们的程序可以共享这个活动的实例应该如何实现呢使用前面三种启动模式肯定是做不到的因为每个应用程序都会有自己的返回栈同一个活动在不同的返回栈中入栈时必然是创建了新的实例。而使用singleInstance 模式就可以解决这个问题在这种模式下会有一个单独的返回栈来管理这个活动不管是哪个应用程序来访问这个活动都共用的同一个返回栈也就解决了共享活动实例的问题。 修改AndroidManifest.xml 中SecondActivity 的启动模式 [java] view plaincopy activity        android:launchModesingleInstance       android:namecn.com.qiang.singleInstance.SecondActivity   /activity   修改MainActivity 中onCreate()方法的代码 [java] view plaincopy protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);              Log.v(MainActivity,Task id is getTaskId());       Button button1  (Button)findViewById(R.id.button1);       button1.setOnClickListener(new OnClickListener() {             Override           public void onClick(View v) {               // TODO Auto-generated method stub               Intent intent  new Intent(MainActivity.this,SecondActivity.class);               startActivity(intent);               }       });   修改SecondActivity 中onCreate()方法的代码 [java] view plaincopy protected void onCreate(Bundle savedInstanceState) {       // TODO Auto-generated method stub       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_second);                  Log.v(MainActivity,Task id is getTaskId());       Button button2  (Button)findViewById(R.id.button2);       button2.setOnClickListener(new OnClickListener() {                          Override           public void onClick(View v) {               // TODO Auto-generated method stub               Intent intent  new Intent(SecondActivity.this,ThirdActivity.class);                              startActivity(intent);           }       });   }   修改ThirdActivity 中onCreate()方法的代码: [java] view plaincopy protected void onCreate(Bundle savedInstanceState) {       // TODO Auto-generated method stub       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_third);                  Log.v(MainActivity,Task id is getTaskId());   }   仍然是在onCreate()方法中打印了当前返回栈的id。现在重新运行程序在MainActivity界面点击按钮进入到SecondActivity 然后在SecondActivity 界面点击按钮进入到ThirdActivity。查看LogCat 中的打印信息如图所示 可以看到 SecondActivity 的Task id 不同于MainActivity 和ThirdActivity 这说明SecondActivity 确实是存放在一个单独的返回栈里的而且这个栈中只有SecondActivity 这一个活动。 然后我们按下Back 键进行返回你会发现ThirdActivity 竟然直接返回到了MainActivity再按下Back 键又会返回到SecondActivity再按下Back 键才会退出程序这是为什么呢其实原理很简单由于FirstActivity 和ThirdActivity 是存放在同一个返回栈里的当在ThirdActivity 的界面按下Back 键ThirdActivity 会从返回栈中出栈那么MainActivity 就成为了栈顶活动显示在界面上因此也就出现了ThirdActivity 直接返回到MainActivity 的情况。然后在MainActivity 界面再次按下Back 键这时当前的返回栈已经空了于是就显示了另一个返回栈的栈顶活动即SecondActivity。最后再次按下Back 键这时所有返回栈都已经空了也就自然退出了程序。 singleInstance 模式的原理示意图
http://www.zqtcl.cn/news/311676/

相关文章:

  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置
  • 福州营销网站建设老品牌网站开通
  • 电子商务网站体系结构有哪些?网站开发规划书怎么写
  • 建设一个网站要多少钱建设银行信用卡卡网站首页
  • 百度推广效果怎样seo网上培训课程
  • 广州品牌网站建设 优美wordpress 跳转页面
  • 成都专业的网站建设制作公司哪家好m3u8视频可以永久保存吗
  • 上海做兼职的网站如何在凡科建设网站
  • 沙朗镇做网站公司企业管理咨询师是干什么的
  • 起名网站建设商汇通网站
  • 网站开发费税率是多少钱建设小网站教程
  • 企业制作网站服务物联网应用有哪些
  • 中国建设网站银行个人做网站要注意什么条件
  • 莆田哪里有学做网站的wordpress可视化函数
  • 网站规划书500字上海金融网站制作网站制作公司好
  • 郑州网站制做钓鱼网站的公司
  • 网站域名授权怎么做以鹦鹉做头像的网站
  • 后端开发网站做一些什么WordPress能做门户网吗
  • 石家庄市住房和城乡建设厅网站好的企业型网站模板下载
  • 哈尔滨快速建站公司推荐网站刷流量会怎么样
  • 网站开发 顺德做新闻微网站有哪些
  • 如何阿里巴巴网站做推广苏州高新区建设局网站管网
  • 个人网站设计构思做汽车保养的网站
  • 在什么网站可以接国外的模具做中英文网站是怎么做的
  • 网站中的文字滑动怎么做的沈阳模板建站定制
  • 国内网站开发二手房网站开发背景
  • 电商网站建设与管理实践电商网站前端制作分工