1.销毁一个activity
使用android手机的black按键或者使用finish()方法
btn_test.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish();//销毁activity } }); |
★activity一键强制退出(销毁多个Activity)
思路:创建一个List装所有创建的activity,再写一个removeActivity()方法关闭所有的activity退出程序
import android.app.Activity;
import java.util.ArrayList; import java.util.List; /** *类名称:ActivityCollector *功能:新建或关闭Activity处理类 *@author:sxl *@version:1.0.0 */ public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>(); /** * 函数名称:addActivity * 功能:向activities中添加activity * @param: [activity] * @return: void * @exception: * @author: sxl * @version: */ public static void addActivity(Activity activity){ activities.add(activity);
} /** * 函数名称:removeActivity * 功能:将已经关闭的activity移除Activity集合 * @param: [activity] * @return: void * @exception: * @author: sxl * @version: */ public static void removeActivity(Activity activity){ activities.remove(activity);
} /** * 函数名称:finishAll * 功能:关闭掉list集合中所有没有关闭掉的Activity * @param: [activities] * @return: void * @exception: * @author: sxl * @version: */ public static void finishAll(List<Activity> activities){ for(Activity activity:activities){ if(!activity.isFinishing()){ activity.finish(); } } } } |
2.多个Activity之间切换通信
使用Intent:Intent有两种:显式、隐式
- 显式Activity切换方式
首先Activity要在AndroidManifest.xml中注册(这些Android Studio都会帮我们做)
配置文件里不用做任何配置,只要注册第二个activity就可以了 //其中第一个是主activity;第二个参数是要切换的Activity类 Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivity(intent); |
- 隐式Activity切换方式
将设置好action、category等信息的Activity交给Intent处理,Intent会找到合适的Activity去响应
①最普通的隐式启动
<intent-filter> <action android:name="AUTO_START"/> <!--category在不指定的是有默认为DEFAULT 但是我在使用的时候不指定会报错--> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>
代码部分: Intent intent_yinshi = new Intent("AUTO_START"); startActivity(intent_yinshi); |
②隐式启动加载拨打电话、网页、位置信息
<!--category在不指定的是有默认为DEFAULT 但是我在使用的时候不指定会报错--> <action android:name = "android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <!--<data android:scheme="tel" />--> <data android:scheme="http"/>
代码部分: Intent intent_yinshi = new Intent(Intent.ACTION_DIAL); intent_yinshi.setData(Uri.parse("http://www.baidu.com")); // intent_yinshi.setData(Uri.parse("tel:10086")); startActivity(intent_yinshi); |
- activity之间参数传递
发送端:putExtra()
接收端:首先用getIntent()方法获取Intent;然后用getIntExtra()方法获取传递值
//我这里用的隐式进行参数传递的 <intent-filter> <action android:name="AUTO_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> 代码部分 发送端: //传递数据 用putExtra() intent_yinshi.putExtra("in_data",1); 接收端: Intent intent = getIntent(); int value = intent.getIntExtra("in_data",0); |
- activity结束返回信息给上一个Activity
上一个Activity的发送端代码: Intent intent = new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("data",1); startActivityForResult(intent,1); 下一个Activity返回信息: Intent void_intent = new Intent(); void_intent.putExtra("return","我收到你发的1了。。。。"); setResult(RESULT_OK,void_intent); finish(); 上一个Activity触发的函数: /** * 函数名称:onActivityResult * 功能:接收刚刚下一个Activity返回的信息 * @param: [requestCode, resultCode, data] * @return: void * @exception: * @author: sxl * @version: */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 1: if(resultCode==RESULT_OK){ String result = data.getStringExtra("return"); Log.e("log",result+".............."); } break; default: } } |