Android四大组件之活动分析(笔记)

    xiaoxiao2026-06-07  2

    活动被创建执行的第一个方法隐藏标题栏在活动中使用Toast销毁活动活动的四种状态和七种回调方法对话框式的活动在活动回收之前保存数据知晓当前是在哪一个活动随时随地退出程序启动活动的最佳写法

    活动被创建执行的第一个方法

    public class HelloWorldActivity extends Activity {       //onCreate()是活动被创建时必定执行的方法     @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.hello_world_layout);  //引入hello_world_layout.xml布局     }  

    隐藏标题栏

    在onCreate方法中

        protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);   requestWindowFeature(Window.FEATURE_NO_TITLE);//必须在setContentView()之前执行,不然会报错         setContentView(R.layout.hello_world_layout);  //引入hello_world_layout.xml布局     } 

    在活动中使用Toast

    protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       requestWindowFeature(Window.FEATURE_NO_TITLE);       setContentView(R.layout.first_layout);          Button button1 = (Button) findViewById(R.id.button_1);       button1.setOnClickListener(new OnClickListener() {           @Override           public void onClick(View v) {               Toast.makeText(FirstActivity.this"You clicked Button 1",  Toast.LENGTH_SHORT).show();           }       });   第一个参数是 Context 

    第二个参数是文本内容

    第三个参数是显示的时长

    >有两个内置的常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG

    销毁活动

    直接使用finish(),例如点击这个按钮销毁这个活动。(一般和返回键一起使用)

    button1.setOnClickListener(new OnClickListener() {       @Override       public void onClick(View v) {       finish();       }   }); 

    按下返回键会调用onBackPressed()方法。

    活动的四种状态和七种回调方法

    Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)

    每个活动在其生命周期中最多可能会有四种状态。

    1.运行状态

    2.暂停状态

    3.停止状态

    4.销毁状态

    Activity类中定义了七个回调方法,覆盖了活动生命周期的每一个环节。

    1.onCreate()

    2.onStart

    3.onResume()

    4.onPause()   这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。

    5.onStop()

    6.onDestroy()

    7.onRestart()

    完整生存期:onCreate()和onDestroy()方法之间所经历的

    可见生存期:onStart()和onStop()方法之间所经历的

    前台生存期:onResume()和onPause()方法之间所经历的

    对话框式的活动

    <activity android:name=".NormalActivity" >   </activity>   <activity android:name=".DialogActivity" android:theme="@android:style/ Theme.Dialog" >   //指定主题是对话框式,xml文件的代码和普通的一样,启动这个活动是不会遮挡整个屏幕。 </activity>

    在活动回收之前保存数据

    @Override   //这个方法会保证一定在活动被回收之前调用 protected void onSaveInstanceState(Bundle outState) {       super.onSaveInstanceState(outState);       String tempData = "Something you just typed";       outState.putString("data_key", tempData);   取出数据 @Override   //Bundle参数一般情况下都是null,但是如果有通过onSaveInstanceState()方法来保存数据的话,这个参数会存有之前所保存的全部数据。 protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);       if (savedInstanceState != null) {           String tempData = savedInstanceState.getString("data_key");       }   }  

    Bundle可以结合Intent一起传递数据。

    知晓当前是在哪一个活动

    新建一个AaseActivity类继承自Activity类并重写它的方法

    public class BaseActivity extends Activity {       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           Log.d("BaseActivity", getClass().getSimpleName());  //获取当前实例的类名     }   让之后的类继承这个类

    随时随地退出程序

    新建一个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();               }           }       }   } 在BaseActivity类中

    public class BaseActivity extends Activity {       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           ActivityCollector.addActivity(this);       }       @Override       protected void onDestroy() {           super.onDestroy();           ActivityCollector.removeActivity(this);       }   }   然后只要在任何地方调用ActivityCollector.finishAll()方法即可

    启动活动的最佳写法

    在要启动的活动中(目的活动)

    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);       }   //添加了一个actionStart()方法,在这个方法中完成了Intent的构建,另外所有SecondActivity中需要的数据都是通过actionStart()方法的参数传递过来的,然后把它们存储到Intent中,最后调用startActivity()方法启动SecondActivity。     ……   } 在出发活动中

    button1.setOnClickListener(new OnClickListener() {       @Override       public void onClick(View v) {           SecondActivity.actionStart(FirstActivity.this"data1""data2");       }   }); 
    转载请注明原文地址: https://ju.6miu.com/read-1310287.html
    最新回复(0)