第一行代码Android学习(二)

    xiaoxiao2024-07-25  13

    第一行代码Android学习:第二部分

    主要涉及到Activity的生命周期和Activity的实践,包括:知晓当前是哪个活动、随时退出程序、启动活动的最佳写法

    1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.dyhdm_02_activitycycletest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!-- android:launchMode 四种 standard singleTop singleTask singleInstance --> <activity android:name="com.example.dyhdm_02_activitycycletest.MainActivity" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.dyhdm_02_activitycycletest.NormalActivity" android:label="@string/title_activity_normal" > </activity> <activity android:name="com.example.dyhdm_02_activitycycletest.DialogActivity" android:label="@string/title_activity_dialog" android:theme="@android:style/Theme.Dialog" > </activity> </application> </manifest> 2.activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff" tools:context=".MainActivity" > <Button android:id="@+id/bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start NoramlActivity" /> <Button android:id="@+id/bt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start DialogActivity" /> <Button android:id="@+id/bt3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="结束程序" /> </LinearLayout> 3.activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".NormalActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="normal activity" /> </RelativeLayout> 4.activity_dialog.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".DialogActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="dialog activity" /> </RelativeLayout> 5.BaseActivity.java /* * @Title: BaseActivity.java * @Description: TODO * @author: 张志安 * @data: 2016-8-12 下午5:48:12 * */ package com.example.dyhdm_02_activitycycletest; import android.app.Activity; import android.os.Bundle; import android.util.Log; /** * TODO 所有activity的父类 * @author 张志安 * @data: 2016-8-12 下午5:48:12 */ public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e("BaseActivity", getClass().getSimpleName()+""); ActivityCollector.addActivity(this); } /** * 重载方法 */ @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } } 6.ActivityCollector.java /* * @Title: ActivityCollector.java * @Description: TODO * @author: 张志安 * @data: 2016-8-12 下午5:51:09 * */ package com.example.dyhdm_02_activitycycletest; import java.util.ArrayList; import java.util.List; import android.app.Activity; /** * TODO 管理activity 随时退从程序 * * @author 张志安 * @data: 2016-8-12 下午5:51:09 */ 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(); } } } } 7.MainActivity.java package com.example.dyhdm_02_activitycycletest; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.Toast; public class MainActivity extends BaseActivity { public static final String ZZA = "zza"; private Button bt1; private Button bt2; private Button bt3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e(ZZA, "onCreat"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); if (savedInstanceState != null) { Toast.makeText(MainActivity.this, savedInstanceState.getString("data"), Toast.LENGTH_SHORT) .show(); } bt1 = (Button) findViewById(R.id.bt1); bt2 = (Button) findViewById(R.id.bt2); bt3 = (Button) findViewById(R.id.bt3); bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // startActivity(new Intent(MainActivity.this, // NormalActivity.class)); // 优化写法,便于交接 NormalActivity.actionStart(MainActivity.this, "data1", "data2"); } }); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, DialogActivity.class)); } }); bt3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ActivityCollector.finishAll(); } }); } /** * 重载方法 */ @Override protected void onStart() { super.onStart(); Log.e(ZZA, "onStart"); } /** * 重载方法 */ @Override protected void onResume() { super.onResume(); Log.e(ZZA, "onResume"); } /** * 重载方法 */ @Override protected void onPause() { super.onPause(); Log.e(ZZA, "onPause"); } /** * 重载方法 */ @Override protected void onStop() { super.onStop(); Log.e(ZZA, "onStop"); } /** * 重载方法 */ @Override protected void onDestroy() { super.onDestroy(); Log.e(ZZA, "onDestroy"); } /** * 重载方法 */ @Override protected void onRestart() { super.onRestart(); Log.e(ZZA, "onRestart"); } /** * 临时保存数据 重载方法 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("data", "HelloGirl"); } } 8.NormalActivity.java package com.example.dyhdm_02_activitycycletest; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.Menu; import android.view.Window; public class NormalActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_normal); } /** * TODO 启动Activity的优化写法 * @throw * @return void */ public static void actionStart(Context context, String data1, String data2) { context.startActivity(new Intent(context, NormalActivity.class) .putExtra("param1", data1).putExtra("param2", data2)); } } 9.DialogActivity.java package com.example.dyhdm_02_activitycycletest; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.Window; public class DialogActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); } }

    代码下载

    转载请注明原文地址: https://ju.6miu.com/read-1291034.html
    最新回复(0)