Activity生命周期
Activity间的数据传递
传一个数据:
存:
Intent it1 = new Intent(A.this, B.class);
It1.putExtra(“key”, value);
startActivity(it1);
取:
Intent it2 = getIntent();
getStringExtra(“key”);//相应类型对应修改
传多个数据:
存:
Intent it1 = new Intent(A.this, B.class);
Bundle bd = new Bundle();
bd.putInt(“num”, 1);
bd.putString(“lala”, “啦啦”);
It1.putExtras(bd);
startActivity(it1);
取:
Intent it2 = getIntent();
Bundle bd = it2.getExtras();
Int n = bd.getInt(“num”);
String d = bd.getString(“lala”);
多个Activity交互
- 使用startActivityForResult(Intent intent, int requestCode)来启动一个Activity
- 在启动的Activity中重写onActivityResult(int reauestCode, int resultCodeIntentdata) 。requestCode是用于区分在该Activity中不同的启动方式,比如有两个不同的按钮,启动的是同一个Activity.传递的数据可能不同,这里就可以用这个requestCode来区别 resultCode:子Activity通过setResult)返回的码
- 在子Activity重写:setResult(int resultCode, Intent data)
随时关闭所有Activity
public class ActivityCollector {
public static LinkedList<Activity> activities = new LinkedList<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();
}
}
}
}
Service生命周期
Activity与Service通信
Service 与Activity进行通信,他们之间交流的媒介就是Service中的onBind()方法。返回一个我们自定义的Binder对象。
基本流程:
1.自定义Service中,自定义一个Binder类,然后将需要暴露的方法都写到该类中。
2.Service类中,实例化这个自定义Binder类,然后重写onBind()方法,将这个Binder对象返回。
3.Activity类中实例化一个ServiceConnection对象,重写onServiceConnected()方法,然后 获取Binder对象,然后调用相关方法即可。