当前位置:  编程技术>移动开发
本页文章导读:
    ▪Handler的运用一        Handler的使用一 //activity里面不能做耗时比较长的操作、不仅会导致runtimeException、 //还会造成比较差的用户体验、需要把处理大量数据的操作放在单独的线程完成、 package com.ck; import android..........
    ▪ 婚配intent        匹配intent Implicit Intent 到底发给哪个activity?这需要进行三个匹配,一个是action,一个是category,一个是data。根据三个的匹配结果,找到应该启动的Activity。 Action Implicit Intent动作匹配指Andro.........
    ▪ 懂得 Activity 的生命周期       理解 Activity 的生命周期 把Activity看成一个页面,在Android系统中,Activity 被作为 Activity 栈进行管理. - 当前活动的Activity 处于栈顶.- 非活动的Activity 压在栈中, 处于等待状况   一个Activity的状.........

[1]Handler的运用一
    来源: 互联网  发布时间: 2014-02-18
Handler的使用一
//activity里面不能做耗时比较长的操作、不仅会导致runtimeException、
//还会造成比较差的用户体验、需要把处理大量数据的操作放在单独的线程完成、
  
package com.ck;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;

public class HandlerDemoActivity extends Activity {
	
	private Button start,stop;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewByIds();
        start.setOnClickListener(new startOnClickListener());
        stop.setOnClickListener(new stopOnClickListener());
    }
    
    class startOnClickListener implements android.view.View.OnClickListener{

		public void onClick(View v) {
                           //线程对象加入到执行队列
			handler.post(runnable);
		}
    }
    
    class stopOnClickListener implements android.view.View.OnClickListener{

		public void onClick(View v) {
			handler.removeCallbacks(runnable);
		}
    }
    
    Handler handler = new Handler();
    Runnable runnable = new Runnable(){
		public void run() {
//这里加入要做的操作
			System.out.println("updateThread...");
			handler.postDelayed(runnable, 3000);
		}
    };
    
    void findViewByIds(){
    	start = (Button)findViewById(R.id.start);
    	stop = (Button)findViewById(R.id.stop);
    }
}

    
[2] 婚配intent
    来源: 互联网  发布时间: 2014-02-18
匹配intent
Implicit Intent 到底发给哪个activity?
这需要进行三个匹配,一个是action,一个是category,一个是data。根据三个的匹配结果,找到应该启动的Activity。



Action Implicit Intent
动作匹配指Android Intent Filter包含特定的动作或没有指定的动作。

一个Intent Filter有一个或多个定义的动作,如果没有任何一个能与Intent指定的动作匹配的话,这个Intent Filter在算作是动作匹配检查失败。

<intent-filter>元素中可以包括子元素<action>,比如:
<intent-filter>
<action android:name=”com.example.project.SHOW_CURRENT” />
<action android:name=”com.example.project.SHOW_RECENT” />
<action android:name=”com.example.project.SHOW_PENDING” />
</intent-filter>
一条<intent-filter>元素至少应该包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配。如果Intent请求的Action和<intent-filter>中个某一条<action>匹配,那么该Intent就通过了这条<intent-filter>的动作测试。

Category Implicit Intent
种类匹配更为严格。Intent Filter必须包含所有在解析的Intent中定义的种类。一个没有特定种类的Intent Filter只能与没有种类的Intent匹配。

<intent-filter>元素可以包含<category>子元素,比如:
<intent-filter . . . >
<category android:name=”android.Intent.Category.DEFAULT” />
<category android:name=”android.Intent.Category.BROWSABLE” />
</intent-filter>
只有当Intent请求中所有的Category与组件中某一个IntentFilter的<category>完全匹配时,才会让该Intent请求通过测试,IntentFilter中多余的<category>声明并不会导致匹配失败。

Data Implicit Intent
Intent的数据URI中的部分会与Intent Filter中的data标签比较。如果Intent Filter定义scheme,host/authority,path或mimetype,这些值都会与Intent的URI比较。任何不匹配都会导致Intent Filter从列表中删除。没有指定data值的Android Intent Filter会和所有的Intent数据匹配。

mimetype是正在匹配的数据的数据类型。当匹配数据类型时,你可以使用通配符来匹配子类型(例如,earthquakes/*)。如果Intent Filter指定一个数据类型,它必须与Intent匹配;没有指定数据的话全部匹配。
scheme是URI部分的协议——例如,http:,mailto:,tel:。
host-name或“data authority”是介于URI中scheme和path之间的部分(例如,www.google.com)。匹配主机名时,Intent Filter的scheme也必须通过匹配。
数据path是紧接在“data authority”的后面(例如,/ig)。path只在scheme和host-name部分都匹配的情况下才匹配。
数据在<intent-filter>中的描述如下:
<intent-filter . . . >
<data android:type=”video/mpeg” android:scheme=”http” . . . />
<data android:type=”audio/mpeg” android:scheme=”http” . . . />
</intent-filter>
<data>元素指定了希望接受的Intent请求的数据URI和数据类型,URI被分成三部分来进行匹配:scheme、authority和path。其中,用setData()设定的Inteat请求的URI数据类型和scheme必须与IntentFilter中所指定的一致。若IntentFilter中还指定了authority或path,它们也需要相匹配才会通过测试。


    
[3] 懂得 Activity 的生命周期
    来源: 互联网  发布时间: 2014-02-18
理解 Activity 的生命周期

把Activity看成一个页面,在Android系统中,Activity 被作为 Activity 栈进行管理.
- 当前活动的Activity 处于栈顶.
- 非活动的Activity 压在栈中, 处于等待状况

 

一个Activity的状态有如下4种:
- 活动. (处于栈顶, 有焦点,可见)
- 暂停. (失去焦点,但可见)
- 停止. (失去焦点,不可见)
- 销毁. (被系统或进程结束)

 

一个Activity的方法有如下7个:
- .onCreate()    创建
- .onStart()      启动
- .onRestart()    重启.
- .onResume()  恢复
- .onPause()     暂停
- .onStop()      停止
- .onDestroy()   销毁

 

Activity 的生命周期的 Cases
a. Activiy1 启动
   - Code:

super.onCreate()

 
   - 运行顺序: ( Activity1 : onCreate() -> onStart() ->onResume() )

 

b. 从Activity1 跳转到 Activity2, 然后关闭Activity1.
   - Code: 
      

Intent intent = new Intent();  //新建一个Intent对象.
intent.setClass(Activity1.this, Activity2.class);  //设定Intent要启动的类. 
startActivity(intent); //启动一个新的Activity
Activity1.this.finish();  //关闭当前的Activity.

     - 运行顺序: (Activity1: onPause() )->  ( Activity2: onCreate() ->onStart() ->onResume()) -> (Activity1:onStop() ->onDestroy())

 

c. 关闭Activity1, 退出程序 , 或者按 "BACK" 键.
    - Code: 
      

Activity1.this.finish(); 

 
     -运行顺序: Activity1: onPause()->onStop()->onDestroy();

 

d. 按"HOME"键, 然后再运行程序.
     - 运行顺序: Activity1: onPause()->onStop()  => 运行其他程序 => 再运行本程序: Activity1: onRestart()->onStart()-)>onResume()

 

e. 刷新Activity1
    - Code:

  

public class LifeCycleActivity extends Activity {
    /** Called when the activity is first created. */
	private static final String TAG = "MainActivity"; 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        Log.i(TAG, "onCreate()"); 
         
        Button button = (Button) this.findViewById(R.id.button); 
        button.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
              //Intent intent = new Intent(LifeCycleActivity.this, Activity2.class); 
              //startActivity(intent); 
            	reload();
            } 
        }); 
    } 
 
    @Override 
    protected void onDestroy() { 
        Log.i(TAG, "onDestroy()"); 
        super.onDestroy(); 
    } 
 
    @Override 
    protected void onPause() { 
         Log.i(TAG, "onPause()"); 
        super.onPause(); 
    } 
 
    @Override 
    protected void onRestart() { 
         Log.i(TAG, "onRestart()"); 
        super.onRestart(); 
    } 
 
    @Override 
    protected void onResume() { 
         Log.i(TAG, "onResume()"); 
        super.onResume(); 
    } 
 
    @Override 
    protected void onStart() { 
         Log.i(TAG, "onStart()"); 
        super.onStart(); 
    } 
 
    @Override 
    protected void onStop() { 
         Log.i(TAG, "onStop()"); 
        super.onStop(); 
    } 
     
    public void reload(){
    	Intent intent = getIntent();
    	this.finish();
    	startActivity(intent);
    }
} 

 -运行顺序: onCreate()->onStart()->onResume() ==> 点按纽后 onPause()->onCreate()->onStart()->onResume()->onStop()->onDestroy()

 

更多的可以参考:

http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/


    
最新技术文章:
▪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