当前位置:  编程技术>移动开发
本页文章导读:
    ▪ActivityGroup对起步新Activity处理的四种情况        ActivityGroup对启动新Activity处理的四种情况 转自:http://blog.csdn.net/swingline/article/details/6066707   前几天看到hellogv的例子——“ActivityGroup实现Tab分页标签 ”,由于之前没有用过AcitivityGroup,例.........
    ▪ 【叨、校长】PhoneGap+jQuery Mobile+Rest 访问远道数据        【叨、校长】PhoneGap+jQuery Mobile+Rest 访问远程数据 最近研究Mobile Web技术、发现了一个好东西-PhoneGap! 发现用PhoneGap+jQuery Mobile是一个很完美的组合! 本实例通俗易懂、适合广大开发人群:高.........
    ▪ Debug certificate expired on提醒调试认证过期       Debug certificate expired on提示调试认证过期 Eclipse中编译Android工程时,提示错误 :Error generating final archive: Debug certificate expired on xxxxxx(日期) 解决办法: 进入:C:/Documents and Settings/USER(用户.........

[1]ActivityGroup对起步新Activity处理的四种情况
    来源: 互联网  发布时间: 2014-02-18
ActivityGroup对启动新Activity处理的四种情况

转自:http://blog.csdn.net/swingline/article/details/6066707

 

前几天看到hellogv的例子——“ActivityGroup实现Tab分页标签 ”,由于之前没有用过AcitivityGroup,例子代码不算太少,但看上去出现了ActivityGroup的地方就是:平常的主入口(Activity派生类)变成了继承ActivityGroup。所以看了一头雾水……

        其实,ActivityGroup是Activity的派生类(子类),所以具备了Activity的特性(包括平常所用的onCreate到onDestroy的整个生命周期),所以就是当Activity用也没有问题。不过,它的主要扩展功能是能够同时管理多个Activity。所以如果在某个界面(Activity)上需要来回切换多个不同或相同的Activity时,它是很好用的。

        曹文斌的“ActivityGroup是如何对嵌入的Activitys进行管理的 ”文章已经详细解释ActivityGroup与其管理的子Activity的关系,概括来说是:ActivityGroup委托LocalActivityManager对多个子Activity进行管理(子Activity都放到一个Map中,同时为了提高效率也放到一个数组ArrayList中),其中每个子Activity都对应唯一的标识,这个标识用作Map的key值。ActivityGroup使用下面的方式启动子Activity:

 

  • Intent intent = new Intent(MyActivityGroup.this, SubActivity.class);  
  • getLocalActivityManager().startActivity("SubActivityKey", intent);  
  •  

            其中, getLocalActivityManager()是ActivityGroup的方法,所以直接实例化一个ActivityGroup来调用这个方法也是可以的。通过该方法得到管理子Activity的委托LocalActivityManager实例,该实例使用startActivity(String id, Intent intent)方法启动子Activity。

     

            既然ActivityGroup管理着多个子Activity,如果原来没有子Activity运行,那不用说就是启动一个新的Activity来运行了;但如果当前已经有一个子Activity正在运行,此时再调用startActivity(String id, Intent intent),会发生些什么情况呢?情况分4种:

  • 1.如果参数中的intent匹配到一个新的(即在Map中不存在的)Activity时,那就启动一个新的Activity,并把id作为key、新的Activity作为value放到Map中;新的Activity一般是指与Map中已经存在的Activity派生类不同的其它Activity的派生类。如果匹配到子Activity与当前运行的相同,则再分情况;
  • 2.如果当前运行的子Activity不是以multiple模式启动或者设置了FLAG_ACTIVITY_SINGLE_TOP属性时,当前运行的子Activity继续运行(而不是结束掉),并调用Activity#onNewIntent(Intent)方法,这个会体现在onResume()中(即之后调用onResume);生命周期为:onCreate -> onStart -> onResume -> onPause -> onNewIntent -> onResume -> onPause -> onNewIntent -> ......
  • 3.如果新请求中的Intent与当前运行的子Activity的Intent内容一样(extras除外),且新请求中的Intent没有设置FLAG_ACTIVITY_CLEAR_TOP属性,则当前运行的子activity会继续运行(跟当前一样),也不会调用onNewIntent、onResume;
  • 4.其它情况(如设置了FLAG_ACTIVITY_CLEAR_TOP属性),则先把当前的子Activity结束掉,然后启动新的Activity(这新旧两个子Activity类名同一个)。
  •         hellogv的例子中,子Activity只有一种SubActivity,如果Intent设置了FLAG_ACTIVITY_CLEAR_TOP属性,则每次切换时都会先把当前的SubActivity结束掉,然后再启动一个新的SubActivity;如果没有设置FLAG_ACTIVITY_CLEAR_TOP属性,则当前的SubActivity继续运行,此时如果Activity是非multiple模式或Intent设置了FLAG_ACTIVITY_SINGLE_TOP属性则可以看到生命周期的变化,否则就好像什么都没有发生。


        
    [2] 【叨、校长】PhoneGap+jQuery Mobile+Rest 访问远道数据
        来源: 互联网  发布时间: 2014-02-18
    【叨、校长】PhoneGap+jQuery Mobile+Rest 访问远程数据

    最近研究Mobile Web技术、发现了一个好东西-PhoneGap!

    发现用PhoneGap+jQuery Mobile是一个很完美的组合!

    本实例通俗易懂、适合广大开发人群:高富帅、白富美、矮穷戳;不论老幼妇孺、年过花甲、还是牙牙学语!由于此实例太过惊世骇俗、望练成之后、找个地方埋了!否则天下大乱、望施主谨记!善哉、善哉!--叨、校长

    第一式:人剑合一(Android平台+PhoneGap+jQuery Mobile整合)

    下载PhoneGap开发包:官方下载:http://phonegap.com/download/

    解压PhoneGap压缩包;以备不时之需!

    由于本实例是基于Android平台的,所以关于android开发环境的搭建这里不再说明!百度一下、你就知道!

     

    新建一个Android项目:

    项目结构如图所示:

    说明:

    jquerymobile目录是jQuery Mobile开发包!

    新建好项目之后、修改一些地方、进行整合!

    1、修改MainActivity.java类:

    public class MainActivity extends DroidGap {
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		super.loadUrl("file:///android_asset/www/index.html");
    	}
    }

     2、修改清单文件:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.cordvoaand"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="7"
            android:targetSdkVersion="7" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            
            <activity
                android:name="com.example.cordvoaand.MainActivity"
                android:label="@string/app_name"
                android:configChanges="orientation|keyboardHidden" > <!-- 新增的一个activity属性 -->
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        
        <!-- 增加Cordova屏幕支持 -->
        <supports-screens
    		android:largeScreens="true"
    		android:normalScreens="true"
    		android:smallScreens="true"
    		android:resizeable="true"
    		android:anyDensity="true" />
        
        <!-- 增加Cordova插件的支持 -->
        <uses-permission android:name="android.permission.VIBRATE" />
    	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    	<uses-permission android:name="android.permission.READ_PHONE_STATE" />
    	<uses-permission android:name="android.permission.INTERNET" />
    	<uses-permission android:name="android.permission.RECEIVE_SMS" />
    	<uses-permission android:name="android.permission.RECORD_AUDIO" />
    	<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    	<uses-permission android:name="android.permission.READ_CONTACTS" />
    	<uses-permission android:name="android.permission.WRITE_CONTACTS" />
    	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    	<uses-permission android:name="android.permission.GET_ACCOUNTS" />
    	<uses-permission android:name="android.permission.BROADCAST_STICKY" />
        
        
    
    </manifest>

     3、打开index.html文件、写一个简单的jQuery Mobile页面

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Cordova</title>
    <script type="text/javascript" charset="utf-8" src="/blog_article/cordova-2.3.0.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="/blog_article/jquerymobile/jquery.mobile-1.1.1.css" />
    <script src="/blog_article/jquerymobile/jquery-1.8.2.js"></script>
    <script src="/blog_article/jquerymobile/jquery.mobile-1.1.1.js"></script>
    </head>
    <body>
    	<div data-role="page">
    		<div data-role="header">
    			<h1>PhoneGap+jQuery Mobile+Rest访问远程数据</h1>
    		</div>
    		<!-- /header -->
    		<div data-role="content">
    			<ul id='jokelist' data-role="listview" data-inset="true" data-filter="true">
    			</ul>
    		</div>
    		<!-- /content -->
    
    	</div>
    	<!-- /page -->
    </body>
    </html>

     这样就整合成功了!

    如果不明白的地方!请查看详细教程!

    www.uikid.com UI小子提供帮助!

    第二式:剑斗九天(访问Rest接口)

    关于后台Rest接口的编写这里不再阐述、

    修改index.html:

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Cordova</title>
    <script type="text/javascript" charset="utf-8" src="/blog_article/cordova-2.3.0.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="/blog_article/jquerymobile/jquery.mobile-1.1.1.css" />
    <script src="/blog_article/jquerymobile/jquery-1.8.2.js"></script>
    <script src="/blog_article/jquerymobile/jquery.mobile-1.1.1.js"></script>
    </head>
    <body>
    	<div data-role="page">
    		<div data-role="header">
    			<h1>PhoneGap+jQuery Mobile+Rest访问远程数据</h1>
    		</div>
    		<!-- /header -->
    		<div data-role="content">
    			<ul id='jokelist' data-role="listview" data-inset="true" data-filter="true">
    			</ul>
    		</div>
    		<!-- /content -->
    
    	</div>
    	<!-- /page -->
    	<script type="text/javascript">
    		function test(){
    			$.ajax({
    				//远程Rest接口
    				url:"http://192.168.1.101:8080/RestTest/rest/test/getDataGrid2",
    				//返回的数据类型
    				dataType:"json",
    				contentType:"application/json;charset=UTF-8;",
    				beforeSend: function (XMLHttpRequest) {
    					XMLHttpRequest.setRequestHeader("Accept", "application/json");
    				},
    				success:function(response){
    					var data=response.content;
    					var count=data.length;
    					for(var i=0;i<count;i++){
    						$("#jokelist").append("<li><a href='/blog_article/list/uuid/.html"+data[i].uuid+"'>"+data[i].title+"</li>")
    					}
    				},
    				error:function(jqXHR, textStatus, errorThrown){
    					alert("服务器异常!系统退出!");
    				}
    			})
    		}
    		test();
    	</script>
    </body>
    </html>

     第三式:打完收工(运行项目,Run as Android Application...)

    效果图:

    谢谢学习!施主、拯救世界的任务就交给你了!这样吧、收你10元钱、工本费呀!

     

     


        
    [3] Debug certificate expired on提醒调试认证过期
        来源: 互联网  发布时间: 2014-02-18
    Debug certificate expired on提示调试认证过期

    Eclipse中编译Android工程时,提示错误 :Error generating final archive: Debug certificate expired on xxxxxx(日期)


    解决办法:
    进入:C:/Documents and Settings/USER(用户账户)/.android ,删除:debug.keystore和ddms.cfg
     

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3