intent传递对象

Android基础面试题

最后都变了- 提交于 2020-01-30 01:54:15
1. 请描述一下Activity 生命周期。 答: 如下图所示。共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。 onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问。 onStart(): Activity变为在屏幕上对用户可见时调用。 onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。 onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。 onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用。 onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而不是启动新的Activity。 1、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。 2、可见生命周期: 当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。 3、前景生命周期:

如何使用意图将对象从一个Android活动发送到另一个?

柔情痞子 提交于 2020-01-29 08:06:54
如何使用 Intent 类的 putExtra() 方法将自定义类型的对象从一个 Activity 传递到另一个 Activity ? #1楼 感谢您的包裹帮助,但我发现了另一种可选解决方案 public class getsetclass implements Serializable { private int dt = 10; //pass any object, drwabale public int getDt() { return dt; } public void setDt(int dt) { this.dt = dt; } } 活动一 getsetclass d = new getsetclass (); d.setDt(50); LinkedHashMap<String, Object> obj = new LinkedHashMap<String, Object>(); obj.put("hashmapkey", d); Intent inew = new Intent(SgParceLableSampelActivity.this, ActivityNext.class); Bundle b = new Bundle(); b.putSerializable("bundleobj", obj); inew.putExtras(b);

Android - Android 面试题集 -- Android 部分答案

萝らか妹 提交于 2020-01-24 05:19:22
2.1 Activity 1.Activity是什么? Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。 当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。 2.典型情况下的Activity生命周期? Activity启动–>onCreate()–>onStart()–>onResume() 点击home键回到桌面–>onPause()–>onStop() 再次回到原Activity时–>onRestart()–>onStart()–>onResume() 退出当前Activity时–>onPause()–>onStop()–>onDestroy() 3.异常情况下的Activity的生命周期 & 数据如何保存和恢复? 在onStop之前调用onSaveInstanceState保存当前Activity状态,当Activity被重新创建后,系统调用 onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象 作为参数传递给onRestoreInstanceState和onCreate方法 onRestoreInstanceState的调用时机发生在onStart之后

Android开发之旅:活动与任务

旧时模样 提交于 2020-01-24 05:18:20
——坚持就是胜利!关键是你能坚持吗?不能的话,你注定是个失败者。 引言 关于Android应用程序原理及术语,前面两篇: Android开发之旅:应用程序基础及组件 Android开发之旅:应用程序基础及组件(续) 介绍了Android应用程序的进程运行方式:每一个应用程序运行在它自己的Linux进程中。当应用程序中的任何代码需要执行时,Android将启动进程;当它不在需要且系统资源被其他应用程序请求时,Android将关闭进程。而且我们还知道了Android应用程序不像别的应用程序那样(有Main函数入口点),它没有单一的程序入口点,但是它必须要有四个组件中的一个或几个:活动(Activities) 、服务(Services) 、广播接收者(Broadcast receivers) 、内容提供者(Content providers)。且分别介绍它们的作用,及如何激活和关闭它们、如何在清单文件(AndroidManifest.xml)中声明它们及Intent过滤器。 在简单回顾之后,本篇还是继续介绍Android应用程序原理及术语——活动与任务(Activities and Tasks)。 1、活动与任务概述 2、亲和度和新任务(Affinities and new tasks) 3、启动模式(Launch modes) 4、清除栈(Clearing the stack) 5

Android四大组件之Service

不羁岁月 提交于 2020-01-24 05:06:30
在 Android 四大组件之中,除了 Activity 之外,最常用的就是 Service 了。先来看一下官方对 Service 的介绍 : Service是一个可以在后台执行需要长时间运行的操作的应用组件,它不提供用户界面。其它组件可以启动一个Service ,之后即使用户切换到别的应用里,这个Service 也将继续在后台运行。此外,一个组件可以与一个Service绑定来与之交互,甚至可以进行进程间通信。服务可以在后台执行很多任务,比如处理网络事务,播放音乐,文件读写或者与一个内容提供者交互等等。 由此可见,Service 的用途还是十分广泛的,我们在开发中经常会用到 Service,所以应该对 Service 有一定的了解。 Service 有一个非常需要注意的地方就是它其实是 运行在主线程中的 ,如果是刚了解 Service 的人,很容易会误以为 Service 是另开一个新线程运行的。所以我们一定要注意,不要在 Service 中执行一些耗时操作,从而导致线程阻塞。 想要了解Service,那么就要先了解Service的生命周期,幸运的是,Service的生命周期比起Activity要简单的多。如下 : 上图展示了 Service 在两种形式下的生命周期。下面说明 Service 的两种形式 : 未绑定形式 Service: 该形式的 Service 是通过

3.在Activity之间传递参数

自闭症网瘾萝莉.ら 提交于 2020-01-23 20:55:40
传递简单数据 findViewById ( R . id . startactivity ) . setOnClickListener ( new View . OnClickListener ( ) { @Override public void onClick ( View v ) { Intent i = new Intent ( MainActivity . this , Main2Activity . class ) ; i . putExtra ( "data" , "hello world" ) ; startActivity ( i ) ; } } ) ; Intent i = getIntent ( ) ; textView = findViewById ( R . id . textView ) ; textView . setText ( i . getStringExtra ( "data" ) ) ; 传递数据包Bundle public void onClick ( View v ) { Intent i = new Intent ( MainActivity . this , Main2Activity . class ) ; // i.putExtra( "data","hello world" ); Bundle b = new Bundle (

Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

╄→尐↘猪︶ㄣ 提交于 2020-01-11 03:44:55
前言 在几个月前我写了 Android深入四大组件(一)应用程序启动过程(前篇) 和 Android深入四大组件(一)应用程序启动过程(后篇) 这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。 1.概述 Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity指的是除了应用程序启动的第一个Activity之外的其他的Activity。这里介绍的是根Activity的启动过程,它和普通Activity的启动过程是有重叠部分的,只不过根Activity的启动过程一般情况下指的就是应用程序的启动过程,更具有指导性意义。想要了解普通Activity的启动过程的的同学可以参考根Activity的启动过程去自行阅读源码。 根Activity的启动过程比较复杂,因此这里分为三个部分来讲

Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

自古美人都是妖i 提交于 2020-01-04 05:21:37
前言 在几个月前我写了 Android深入四大组件(一)应用程序启动过程(前篇) 和 Android深入四大组件(一)应用程序启动过程(后篇) 这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。 1.概述 Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity指的是除了应用程序启动的第一个Activity之外的其他的Activity。这里介绍的是根Activity的启动过程,它和普通Activity的启动过程是有重叠部分的,只不过根Activity的启动过程一般情况下指的就是应用程序的启动过程,更具有指导性意义。想要了解普通Activity的启动过程的的同学可以参考根Activity的启动过程去自行阅读源码。 根Activity的启动过程比较复杂,因此这里分为三个部分来讲

Android之使用Bundle进行IPC

别说谁变了你拦得住时间么 提交于 2019-12-30 21:47:14
一、Bundle进行IPC介绍 四大组件中的三大组件(Activity、Service、Receiver)都是支持在Intent中传递Bundle数据的,由于Bundle实现了Parcelable接口,所以它可以方便地在不同的进程之间传输。当然,传输的数据必须能够被序列化,比如基本类型、实现了Parcelable接口的对象、实现了Serializable接口的对象以及一些Android支持的特殊对象,具体内容可以看Bundle这个类,就可以看到所有它支持的类型。Bundle不支持的类型无法通过它在进程间传递数据。 二、使用方法 1.打包数据发送 Intent intent1 = new Intent(MainActivity.this, ThirdActivity.class); Bundle bundle = new Bundle(); bundle.putCharSequence("name", "zhangmiao"); bundle.putInt("age", 20); intent1.putExtras(bundle); startActivity(intent1); 2.接受数据 Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String name = bundle.getString(

Android四大组件之Activity详解

佐手、 提交于 2019-12-30 19:17:50
.Activity的本质 Activity是Android提供的四大组件之一,是进行Android开发必不可少的组件.Activity是一个界面的载体,可以把它与html页面进行类比,html页面由各种各样的标签组成,而Activity则可以由各种控件组成.然而Activity也并不是那么简单.查看Activity类的源码我们就可以看到,这个类大概有六千多行代码,说明Android对Activity的处理是相当复杂的.不过我们平时进行开发的时候不需要了解到那么深入的地步,因为我们可以根据Activity中提供的方法快速的开发,Activity生命周期中涉及到七个回调方法. .Activity的生命周期 Android官方文档给出的Activity生命周期图 当打开一个Activity的时候,会调用这个Activity的onCreate()方法,接着调用onStart()方法,然后调用onResume()方法.当onStart()方法执行之后,我们就可以看到这个Activity界面了.下面通过代码对单个Activity生命周期做进一步的解释. MainActivity.java package com.example.caobotao.activitylifecircle; import android.app.Activity; import android.content