android官网文档学习笔记

1、android的四大组件的了大概功能

    activity:负责显示界面,和用户交互。  

    service:运行在后台。

  content provider:为程序app之间的数据访问提供接口。

  broadcast:广播

2、组件的激活

  activity、service、broadcast都是通过intent激动的。

  启动activity:

你可以启动一个activity(或者让让它来做一些新的工作)通过传递一个Intent给startActivity() 或者 startActivityForResult() (当你想让一个activity为你返回一个结果)。

            Intent intent = new Intent(XskpActivity.this,
                        XsSpmlActivity.class);
                startActivityForResult(intent, REQUEST_CXSPML);
//从loginActivity界面跳到homeActivity界面
                Intent intent = new Intent();
                intent.setClass(LoginActivity.this, HomeActivity.class); // 描述起点和目标
                startActivity(intent);
View Code

     启动service:

  用startService或是bindService

  启动broadcast

  用sendBroadcast,sendOrderedBroadcast,或是sendStickyBroadcast

3、配置文件AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
        </provider>

        <uses-library />

    </application>

</manifest>
View Code

 

  所有的组件:activity,service,broadcast,contentprovider必须在这个文件里面声明。

  声明程序要获得的权限

  声明程序正常运行的配置要求:包括api的要求,配置组件要求

4、activity的使用 

  4.1、创建activity

    1)通过创建activity的子类来创建,在类里面的onCreate()方法里通过调用setContentView()并转入布局文件xml的id来设置程序activity的UI。

    2)activity的布局用xml文件来实现,也可以在代码里自己写布局

    3)在androidManifest.xml文件里配置activity,不声明就访问不了

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >
View Code

 

  4.2、启动activity

    1)简单启动自己程序里另一个activity

Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);
View Code

      在intent里写明要启动的activity名字就可以了 

   2)启动其它程序的activity
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);
View Code

 

       在intent里描述要启动的activity的条件,满足这些条件的程序会自动启动,如果程序不止一个,系统会让用户选择运行哪个程序。

 

   4.3、启动一个带返回结果的activity

      1)只要用startActivityForResult()方法代码startActivity()就行

      2)在本activity里实现onActivityResult()回调方法来获取返回的结果。

private void pickContact() {
    // Create an intent to "pick" a contact, as defined by the content provider URI
    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
    startActivityForResult(intent, PICK_CONTACT_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
    if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
        // Perform a query to the contact's content provider for the contact's name
        Cursor cursor = getContentResolver().query(data.getData(),
        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
        if (cursor.moveToFirst()) { // True if the cursor is not empty
            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
            String name = cursor.getString(columnIndex);
            // Do something with the selected contact's name...
        }
    }
}
View Code

 

 

  4.4、关闭activity

      用finish()或finishActivity(),但一般要关闭activity,关闭后用户就不能返回到这个activity了,一般都是交能系统去关闭,手动关闭后影响了用户的体验。

 
  4.5、管理activity的生命周期

      1)生命周期有:

        resumed:activity在前台,有焦点

        paused:activity被其它的activity挡住了,没有了焦点,但本身还是可见的。

        stop:activity完全被其它的activity覆盖

      2)实现生命周期回调方法

public class ExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // The activity is being created.
    }
    @Override
    protected void onStart() {
        super.onStart();
        // The activity is about to become visible.
    }
    @Override
    protected void onResume() {
        super.onResume();
        // The activity has become visible (it is now "resumed").
    }
    @Override
    protected void onPause() {
        super.onPause();
        // Another activity is taking focus (this activity is about to be "paused").
    }
    @Override
    protected void onStop() {
        super.onStop();
        // The activity is no longer visible (it is now "stopped")
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // The activity is about to be destroyed.
    }
}
View Code

        一般要在onCreate方法里实现activity布局和创建资源,在onDestroy()方法里进行资源的释放。

      3)生命周期图和表

方法描述之后可否被杀死?下一个方法
onCreate()activity第一次被创建时调用。在这里你应该完成所有常见的静态设置工作——创建view、绑定list数据等等。 本方法传入一个包含了该activity前一个状态的Bundle对象(如果之前已捕获了状态的话,详见后面的保存Activity状态)。

下一个回调方法总是onStart()。

onStart()
onRestart()activity被停止后、又再次被启动之前调用。

下一个回调方法总是onStart()

onStart()
onStart()activity要显示给用户之前调用。

如果activity进入前台,则下一个回调方法是onResume();如果进入隐藏状态,则下一个回调方法是onStop()。

onResume() 或 onStop()
onResume()activity开始与用户交互之前调用。这时activity是在activity栈的顶端,用户可以向其中输入。

下一个回调方法总是onPause()。

onPause()
onPause()当系统准备启动另一个正在恢复的activity时调用。这个方法通常用于把未保存的改动提交为永久数据、停止动画播放、以及其它可能消耗CPU的工作等等。 它应该非常迅速地完成工作,因为下一个activity在本方法返回前是不会被恢复运行的。

如果activity返回前台,则下一个回调方法是onResume();如果进入用户不可见状态,则下一个是onStop()

可以onResume() 或 onStop()
onStop()当activity不再对用户可见时调用。原因可能是它即将被销毁、或者其它activity(已有或新建的)被恢复运行并要覆盖本activity。

如果activity还会回来与用户交互,则下一个回调方法是onRestart();如果这个activity即将消失,则下一个回调方法是onDestroy()

可以onRestart() 或 onDestroy()
onDestroy()在本activity被销毁前调用。这是activity收到的最后一个调用。 可能是因为activity完成了工作(有些人在这里调用finish()), 也可能是因为系统为了腾出空间而临时销毁activity的本实例。 可以利用isFinishing() 方法来区分这两种情况。可以
  4.6、保存activity状态(待学)
  4.7、多activity的合作(待学)

 5、fragments(待学)

6、stacks和back stack(待学)

转载于:https://www.cnblogs.com/shengyu-kmust/p/5153402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值