第一行代码笔记, 第二章------探究活动


1:什么是活动?

      活动(Activity)是一种包含用户界面的组件,主要用于和用户交互。

2:活动的用法?

         2.1    手动创建活动

                   创建项目---》创建包--》创建类(名为FirstActivity)

        2.2     创建和加载布局

                  右击res/layout  目录 ---》New--》Android XML File ,命名为first_layout,布局方式为LinearLayout(线性布局)

         2.3  在AndroidManifest文件中注册

                  注册要放在<application>标签中,android:name    指定注册的是哪个活动,android:lable  活动中的标题内容。

                   <intent-filter> 标签中的内容,表示这个程序的主活动,点击APP首先打开的活动。

       2.4    隐藏标题栏

                requestWindowFeature(Window.FEATURE_NO_TITLE).加入这句代码。

               **一定要在setContentview(R.layout.first_layout),之前。

       2.5    在活动中使用Toast

                Toast就是消息提醒,比如登录成功,自动消失。

                Toast.makeText(FirstActivity.this,"wo  shi  Toast",Toast.LENGTH_SHORT).show();

                 第一个参数,Context,上下文。第二个参数,文本内容(要显示的内容)。第三个参数,显示的时长,Toast.LENGTH_SHORT,             Toast.LENGTH_LONG

         2.6 在活动中使用Menu

                2.6.1  在xml中写入代码

                           <item   

                                              android:id="@+id/add_item"

                                              android:title="Add                            />

                           <item

                                              android:id="@+id/remove_item"

                                               android:title="Remove"                />

                  2.6.2  打开FirstActivity,重写如下方法:

                             public boolean  onCreateOptionsMenu(Menu menu){

                                        getMenuInflater().infater(R.menu.main,menu);

                                                         return   true;

                                                                                                }          

               通过getMenuInfater()方法得到MenuInfater对象,再调用infater就可创建菜单。其中两个参数,第一个参数,传入的资源,第二个参数,是添加到哪个Menu中。

                2.6.3    给菜单设置点击事件,重写如下方法

                       public boolean onOptionsItemSelected(MenuItem item){

                          switch(item.getItemId()){

                                       case R.id.add_item:

                                                  Toast.makeText(this,"添加".Toast.LENGTH_SHORT).show();

                                                   break;

                                     

                                      case R.id.remove_item:

                                                  Toast.makeText(this,"删除".Toast.LENGTH_SHORT).show();

                                                   break;

                         default;

                                        }

                               return   true;

                        }

          2.7  销毁一个活动

                  finish();

3:使用Intent

            3.1   显示Intent  

                     Intent intent = new Inten(FirstActivity.this,SecondActivity.class);第一个参数,上下文,当前活动,第二个参数,目标活动。

                     startActivity(intent);

           3.2  隐式Intent 

                      在主配置清单中

                                  注册SecondActivity,,在<intent-filter>中加入:

                                 <action android : name = "com.example.activitytest.ACTION_START"/>

                                 <category android : name="android.intent.category.DEFAULT"/>

                     在逻辑代码中

                                   Intent intent = new Intent("com.example.activitytest.ACTION_START");

                                   startActivity(intent);

        3.3  更多隐式Intent的用法

                  Intent inten = new Intent(Intent.ACTION_VIEW);

                  intent.setData(Uri.parse(http://www.baidu.com));

                 startActivity(intent);

       3.4  向下一个活动传递数据

                    第一个Activity:

                                String data = "我是奔跑的小田";

                                Intent intent = new Intent (FirstActivity.this,SecondActivity.class);

                                intent.putExtra("firstdata",data);

                               startActivity(intent);

                第二个Activity:

                              Intent intent =getIntent();

                              String data = intent.getStringExtra("firstdata");;

                               Log.d("SecondActivity",data);

          3.5  返回数据给上一个活动

                       3.5.1          startActivityForResult()方法,第一个参数是Intent,第二个参数是请求码。(请求码是一个唯一的值)

                       3.5.2           SecondActivity中:

                                              Intent intent = new Intent();

                                              intent.putExtra("firstdata","我是奔跑的小田");

                                             setResult(RESULT_OK,intent);

                                             finish();

                                      setResult()方法有两个参数,第一个是处理结果,第二个是把带数据的Intent传递回去。

                          3.5.3    销毁活动会回调上一个活动,onActivityForResult()方法,在第一个Activity中重写这个方法:

                                      switch(requestCode){

                                                  case 1:

                                                              if(resultCode==RESULT_OK){

                                                                   String returnData = data.getStringExtra("firstdata");

                                                                  Log.d("FirstActivity",returnData);

                                                      }

                                   break;

                              default:

                              }}


                   ****      onActivityForResult()方法,有三个参数,第一个参数,requestCode启动活动传入的请求码,第二个参数resultCode返回数据时传入的结果处理,第三个参数,数据data


      4:活动的生命周期:

           4.1  返回栈:Android使用任务来管理活动,栈是一种后进先出的数据结构,销毁一个活动,就会显示栈顶的活动。

           4.2 活动的状态:

                  4.2.1 运行状态:

                            活动处于栈顶就是运行状态。

                  4.2.2  暂停状态:

                            不是栈顶,但可见就是暂停状态。比如:对话框

                  4.2.3    停止状态:

                           当一个活动不再处于栈顶,不可见,就是停止状态。

                  4.2.4   销毁状态:

                              从返回栈移出时,就是销毁状态。

         4.3   活动的生存期(七个方法)

                    onCreate()做一些初始化的操作,比如:加载布局,绑定事件。

                   onStart()活动由不可见变可见时调用。

                   onResume()于用户交互的时候调用。

                   onPause()暂停

                   onStop()不可见时调用

                   onDestory()销毁时调用

                   onRestart()再次启动的时候调用

         4.4  活动被回收了怎么办?

                     onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据。

5:活动的启动模式:

            5.1   standard (默认模式)      每次启动都会创建一个新的实例。

            5.2   singleTop (栈顶模式)    启动活动,如果栈顶有该活动那么直接使用。

           5.3   singleTask  (栈内模式)   启动活动,如果发现栈内有该活动,直接用,没有再创建。

           5.4  singleInstance (返回栈)  创建独立的活动。

 6:活动的最佳实践

              6.1  知道当前是哪一个活动?

                          新建BaseActivity继承自Activity,重写onCreate方法

                                      Log.d("BaseActivity",getClass().getSimpleName());

             6.2   随时随地退出程序

                       新建一个ActivityCollector类作为活动管理器。

              public class ActivityCollector{

                   public static List<Activity> activities = new ArrayList<Activity>();

                             public static void addActivity(Activity activity){

                                          activities.add(activity);

                                                                                                                 }

                   public static void removeActivity(Activity activity){

                                activities.remove(activity);

                                                                                     }

                 public static void finishAll(){

                                 for(Activity activity : activities){

                                   if(!activity.isFinishing()){

                                                  activity.finish();

                                                             }

                                                                        }

                                                                  }

                                                             }

             接下来:

                 public class BaseActivity extends Activity{

                       onCreate()方法中:

                             Log.d("BaseActivity",getClass().getSimpleName());

                            ActivityCollector.addActivity(this);

                                   }

                         onDestory()方法中

                                      ActivityCollector.removeActivity(this);


            退出多个程序:

                     public class ThirdActivity extends BaseActivity{

                            button.setOnClickListener(new OnClickListener()

                                      public void   onClick(View v){

                                             ActivityCollector.finishAll();

                                                        }}


   6.3  启动活动的最佳写法

               public class SecondActivity extends BaseActivity  {

                      public static void actionStart(Context context,String data1,String data2){

                               Intent intent = new Intent(context,SecondActivity.class);

                                  intent.putExtra("param1",data1);

                                  intent.putExtra("param2",data2);

                                 context.startActivity(intent);

                }

                       }


    

                               button.setOnClickListener(new OnClickListener()

                                      public void   onClick(View v){

                                           SecondActivity.actionStart(FirstActivity.this,"data1","data2");

                     

                                                        }}


                                                                                                                                                                                                                                          2016年10月7日,21.19分,耗时2小时。



                  


               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值