首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我将必要的代码放在OnResume()中,而不是OnCreate()中,但是当我转到不同的活动时,ListView中的数组数据仍然会消失

在Android开发中,OnCreate()方法是Activity生命周期中的一个重要方法,它在Activity第一次创建时被调用。而OnResume()方法是在Activity从后台返回前台时被调用。因此,如果将必要的代码放在OnResume()方法中而不是OnCreate()方法中,可以确保每次从后台返回前台时都会执行该代码,以更新ListView中的数组数据。

当转到不同的活动时,ListView中的数组数据消失的原因可能是因为没有正确保存和恢复数据。为了解决这个问题,可以使用以下方法:

  1. 在Activity的onSaveInstanceState()方法中保存ListView的数组数据。这个方法会在Activity被销毁之前被调用,可以用来保存需要恢复的数据。在该方法中,将数组数据保存到Bundle对象中。
  2. 在Activity的onRestoreInstanceState()方法中恢复ListView的数组数据。这个方法会在Activity重新创建时被调用,可以用来恢复之前保存的数据。在该方法中,从Bundle对象中获取之前保存的数组数据,并更新ListView。

以下是示例代码:

代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private ArrayAdapter<String> adapter;
    private String[] dataArray;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listView);

        if (savedInstanceState != null) {
            dataArray = savedInstanceState.getStringArray("dataArray");
        } else {
            // 初始化数组数据
            dataArray = new String[]{"Item 1", "Item 2", "Item 3"};
        }

        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataArray);
        listView.setAdapter(adapter);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 更新数组数据
        dataArray = new String[]{"Item 4", "Item 5", "Item 6"};
        adapter.notifyDataSetChanged();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        // 保存数组数据
        outState.putStringArray("dataArray", dataArray);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        // 恢复数组数据
        dataArray = savedInstanceState.getStringArray("dataArray");
        adapter.notifyDataSetChanged();
    }
}

在上述代码中,我们在onSaveInstanceState()方法中保存了数组数据,并在onRestoreInstanceState()方法中恢复了数组数据。这样,在转到不同的活动后再返回时,ListView中的数组数据就能正确地被保留和恢复。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mwp
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎:https://cloud.tencent.com/product/tke
  • 腾讯云音视频处理:https://cloud.tencent.com/product/mps
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/ugc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

已中招!Android 基础面试常常吊死在这几个问题上……

面试官:给你讲讲吧,你去别的公司面试你,你可以这样回答: OnCreate():这是第一次创建视图。通常,这是我们创建视图,从包获取数据地方。...确实完成不是更新新ActivityUI,它更新了Activity前一个实例(即创建它实例,但不再显示!)。...创建视图需要花费时间,因此您滚动很可能不会很流畅。这就是为什么 RecyclerView 会利用以下事实:滚动,新行出现在屏幕上,旧行消失在屏幕上。...代替为每个新行创建新视图,而是通过数据绑定到旧视图来对其进行回收和重用! 应聘者:学到了! 18、面试官:再说一下RecyclerView与ListView有何不同?...RecyclerView 列表与其容器分离,因此可以通过设置LayoutManager在运行时轻松地列表项放在不同容器(linearLayout,gridLayout)

2K20
  • Android程序员问答题

    分享是一种幸福,这是一种质飞越。 答题也可能存在出现错误地方,欢迎指正,如果对于文章某些部分有不同理解和想法,或者有更好想法,欢迎留言讨论。...onCreate(Bundle)是你初始化活动地方,onPause()是你处理用户离开你活动地方。...服务对象并不意味着它在自己进程运行,除非另有说明,它运行在与它所属应用程序相同进程。 服务不是一个线程。...singleTop是在启动活动如果发现返回栈栈顶已经是该活动,则认为可以直接使用它。 singleTask是如果每次启动系统首先会在返回栈检查是否存在该活动实例。...Intent为在不同应用程序代码之间执行延迟运行时绑定提供了一种工具。其最重要用途是开展活动,在活动它可以被认为是活动之间胶水。它基本上是一个被动数据结构,对被执行动作进行抽象描述。

    65820

    Android面试题总结【完整详细版本”一”】(含答案)

    当我Activity上弹出Dialog对话框,程序生命周期依然是onCreate() —> onStart() —> onResume(),在弹出Dialog时候并没有onPause()和onStop...当我们在A激活B,A调用onPause()方法,此时B出现在屏幕,B调用onCreate()、onStart()、onResume()。...当A启动B,A调用onPause()方法,然后调用新Activity B,此时调用onCreate()方法 —> onStart()方法 —> onResume()方法新Activity激活。...应用A想用应用B任务栈当中Activity G,尽管在不同应用下,但是应用A仍然会直接复用Activity G。...码字符串,session能够保存任何类型数据】; 安全性上不同【cookie存放在客户端浏览器,对我们客户端可见,客户端一些程序就有可能去修改我们

    88120

    Activity 36 大难点,你会几个?「建议收藏」

    ,Activity 并不会执行生命周期方法 但是如果是跳转到一个不是全屏 Activity 的话, 当然就是按照正常生命周期来执行了 即 onPasue() -> onPause() ( 不会执行原...锁屏时会执行 onPause() 和 onStop() , 开屏则应该执行 onStart() onResume() Activity 退居后台: 当前 Activity 转到 Activity...这里建议方法是又一次去 setIntent 。然后又一次去初始化数据和 UI 。代码例如以下所看到: 这样,在一个页面能够反复跳转并显示不同内容。...一个进程满足下面任何一个条件都被认为是可视: 寄宿着一个不是前台活动但是它对用户仍可见(它 onPause() 方法已经被调用)。...例如我正在使用 qq 和别人聊天,这个时候 qq 是前台进程,但是当我点击 Home 键让 qq 界面消失时候,这个时候它就转换成了后台进程。

    75820

    安卓activity生命周期_产品生命周期五个阶段

    大家好,又见面了,是你们朋友全栈君。 Android系统根据生命周期不同阶段唤起对应回调函数来执行代码。系统存在启动与销毁一个activity一套有序回调函数。...Note: 即使系统会在activity stop停止这个activity,它仍然会保存View对象状态(比如EditText文字) 到一个Bundle,并且在用户返回这个activity恢复它们...那些被系统用来恢复之前状态保存数据被叫做 “instance state” ,它是一些存放在Bundle对象key-value pairs。...如果这个Activity被destroyed然后这个实例又需要被重新创建,系统会传递在 (1) 状态数据onCreate() (2) 与 Activity.onRestoreInstanceState...如果它为null,系统则是创建一个新Activity实例,不是恢复之前被DestoryActivity。

    67410

    写给小白android基础面试笔试题(一)

    Home键,会执行onPause—>onStop; 这个时候当你又回到Activity,会执行onRestart—>onStart—>onResume; 当你从A1界面跳转到A2界面,生命周期变化如下...答:这道题,说实话知道就是把图片进行压缩和把没用文件剔除,但是对与APK包结构还不是特别了解,所以具体还需要优化什么也答不上来了。...:使用Proguard ,这可以让你在编译时候对代码进行混淆和优化,删掉不必要jar包和无用代码。...多渠道打包:就是指分不同市场打包,如安卓市场、百度市场、谷歌市场等等,Android这个市场有点多,就不一一列举了,多渠道打包是为了针对不同市场做出不同一些统计,数据分析,收集用户信息。...Apk进行加密在壳Apk进行合并得到新Dex文件,最后替换壳程序dex文件即可,得到新Apk,那么这个新Apk我们也叫作脱壳程序Apk。

    90320

    安卓第八夜 玛丽莲梦露

    使用ArrayAdapter CategoryActivity将以条目的方式来显示数据存储所有Category,即联系人类别。在上一讲,已经数据存储到了SQLite数据。...ListView是一个View Group,用于管理多条布局相似的视图元素。例如: ? 可以看到,在ListView,虽然每个条目的具体数据不同,但它们构图方式都相同。...这样,不用微观操作每个条目,就可以把注意力放在数据变更上。...当我们取出多个数据后,最自然方式是记录为一个表或数组。我们需要根据小条目的布局,为数据赋予显示格式。最后,再把图像化多个条目合成到ListView上。...在该过程可以更自由控制对数据ListView绑定。下面的CategoryAdapter继承了ArrayAdapter。它将允许: 使用Category表数据

    61510

    安卓第八夜 玛丽莲梦露

    使用ArrayAdapter CategoryActivity将以条目的方式来显示数据存储所有Category,即联系人类别。在上一讲,已经数据存储到了SQLite数据。...ListView是一个View Group,用于管理多条布局相似的视图元素。例如: ? 可以看到,在ListView,虽然每个条目的具体数据不同,但它们构图方式都相同。...这样,不用微观操作每个条目,就可以把注意力放在数据变更上。...当我们取出多个数据后,最自然方式是记录为一个表或数组。我们需要根据小条目的布局,为数据赋予显示格式。最后,再把图像化多个条目合成到ListView上。...在该过程可以更自由控制对数据ListView绑定。下面的CategoryAdapter继承了ArrayAdapter。它将允许: 使用Category表数据

    1.9K90

    Android基础部分再学习---activity生命周期

    例如,如果你活动有一个线程在后台运行下载网络数据,它可以在onCreate()创建该线程【一般在onStart里面创建更好子线程,主要是onCreate()只有5秒响应时间】,然后在onDestroy...它仍然保持着自身所有实例和状态,所以根本不用担心它在返回到onResume方法,实例会变为null,或者控件事件监听不了(以前就担心过这个问题)。...还可以在onCreate执行数据操作,比如从Cursor检索数据等等,但是如果你每次进入这个Activity都可能需要更新数据,那么最好放在onStart里面。...尽管onPause在onStop之前执行,但是onPause只适合做一些轻量级操作,更多耗时耗资源操作还是要放在onStop里面,比如说对数据保存,需要用到数据库操作。...如果我们在进程创建了很多Activity,但是又不想关闭去退出不在任务栈顶Activity,那么就可以直接使用这个方法了。

    89920

    Fragment基本使用

    remove()、replace()方法碎片从从活动移除,但如果在事务提交之前调用addToBackStack()方法,这时碎片也会进入到停止状态。...,commitAllowingStateLoss()方法则是不会抛出异常版本commit()方法,但是尽量使用commit(),不要使用commitAllowingStateLoss()。...onRestoreInstanceState()在onStart()之后,onResume()之前,因此避免出现该异常方案有: 不要把Fragment事务放在异步线程回调 逼不得已使用commitAllowingStateLoss...如果你Fragment任务添加到回退栈,当用户点击后退按钮看到上一次保存Fragment。...4.1 传递数据给Fragment 步骤流程: 在Activity创建Bundle数据包,调用Fragment实例setArguments(),Bundle数据包传给Fragment Fragment

    1.9K30

    Android Activity生命周期整理

    当用户短暂离开APP,如有必要,要能够把当前用户数据记录下来。 当屏幕切换竖屏横屏,不要导致APP崩溃以及用户数据丢失。...在上图展示六个状态,其中三个是属于静态另外三个是瞬态直接跳转到下一状态。)。静态便是:Resumed、Paused、Stopped,这三个状态能长时间存在。...onCreate方法是瞬态,一旦执行完所有的初始化代码,便立即执行onStart方法,onResume方法,到达Resumed状态。用户操作均在此状态下完成。 ?...Note: 当activity进入paused状态后,它之前所初始化组件信息是存储在内存,并不会消失,因此也无需在onResume()方法重新进行初始化。...正如前面代码所示,如果你在onPause方法,释放了一些系统资源,那么一旦用户回到activity就需要相应初始化释放掉资源。其次,初始化之前只在onResume方法初始化资源。

    83830

    Android Activity详解(一)

    Activity生命周期图 在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图,不会~~~~(>_<)~~~~) 主活动代码如下: public class MainActivity...--->: onResume(页面运行) 2,跳转到SecondActivity页面 I/MainActivity--->: onPause(MainActivity由onResume切换到暂停状态)...图画不好看,见谅 当然,活动生命周期改变并不仅仅由跳转页面所决定,比如手机配置比较低,高优先级系统级应用需要内存就会把应用杀死,那毫无疑问 活动将由onResume——>onPause——>onStop...——>onDestroy 最后一个特殊情况再测试点击手机HOME键: 绝大多数教程内均写是点击HOME键任务进入后台,活动onStop()被保存,但是在真机测试不是这样 I/MainActivity...--->: onPause I/MainActivity--->: onStop I/MainActivity--->: onDestroy 设备是魅族MX4,安卓5.1系统,个人猜想可能是安卓版本不同所导致

    91610

    Android基础总结(2)——活动Activity

    Android是使用任务栈(Task)来管理活动,一个任务就是一组存放在活动集合,这个栈也被称作返回栈。...每当我们开启一个新活动,它会在返回栈入栈,并处于栈顶位置;当我们按下Back键或调用finish()方法去销毁一个活动,处于栈顶活动会出栈,这时前一个入栈活动就会重新回到栈顶位置。...Intent还可以和Bundle一起用于传递数据,首先可以把需要传递数据保存在Bundle对象,然后Bundle对象存入Intent,到了目标活动之后先从Intent取出Bundle,再从Bundle...2.Activity没被杀死,onCreate不会被调用,但onRestoreInstanceState 仍然会被调用,在 onResume之前恢复上次保存信息。     ...Activity onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同onCreate()、onPause()等生命周期方法

    1.2K90

    2020年Android初级面试题一年汇总出炉,吃透它!

    onTouchEvent()是否处理本次事件,滑动冲突分为同方向滑动冲突,例如ScrollView和ListView,同方向滑动冲突,可以计算ListView高度动态设置ListView高度,ScrollView...例如ViewPager和ListView,不同方向滑动冲突,一个是横向滑动一个是竖直滑动,不同方向滑动可以判断滑动x,y轴是横向还是竖直滑动,如果判断得到是横向滑动,就拦截ListView事件,竖则反之...内部,而在MVCView会从直接Model读取数据不是通过 Controller。...可见且在前台并开始活动,这是与 onStart 区别所在; onPause(): 表示 Activity 正在停止,此时可做一些 存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新 Activity...所以如果使用 add 一般会伴随 hide()和show(),避免布局重叠; 使用 add,如果应用放在后台,或以其他方式被系统销毁,再打开,hide()引用 fragment 会销毁,所以依然会出现布局重叠

    1.3K30

    保存数据返回后可以继续编辑

    但是当系统内存不足, 调用onPause()和onStop()方法后activity可能会被系统摧毁, 此时内存中就不会存有该activity实例对象了....对象, 这样即使activity被系统摧毁, 当用户重新启动这个activity调用它onCreate()方法, 上述Bundle对象会作为实参传递给onCreate()方法, 开发者可以从...Bundle对象取出保存数据, 然后利用这些数据activity恢复到被摧毁之前状态....比如用户按下BACK键退出activity, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复, 也就是onSaveInstanceState()方法不会被调用....保存持久化数据操作应该放在onPause(). onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件状态, 成员变量值等.

    815100

    Android面试大纲(集合)

    是一种页面内跳转协议,通过定义自己scheme协议,可以跳转到app各个页面 服务器可以定制化告诉app跳转哪个页面 App可以通过跳转到另一个App页面 可以通过H5页面跳转页面 1 Fragment...Intent来传送我们数据 2、Broadcast Receiver使用场景 同一App具有多个进程不同组件之间消息通信 不同App之间组件之间消息通信 3、Broadcast Receiver...面试题 1、ListView是什么 ListView是能将一个数据集合以动态滚动方式展示到用户界面上View 2、ListViewRecycleBin机制 ?...是存放在,我们只要回收堆内存即可 在安卓3.0以后Bitmap是存放在内存,我们需要回收native层和Java层内存 官方建议我们3.0以后使用recycle方法进行回收,该方法也可以不主动调用...上 2、热更新主流框架 Dexposed AndFix Nuwa Tinker 3、热更新原理 在ClassLoader创建一个dexElements数组 修复好dex文件存放在dexElements

    1.1K20

    AndroidStdio1_5

    在启动活动传递数据思路很简单,Intent中提供了一系列putExtra()方法重载,可以把我们想要传递数据暂存在Intent,启动了另一个活动后,只需要把这些数据再从Intent取出就可以了...既然可以传递数据给下一个活动,那么能不能够返回数据给上一个活动呢?答案是肯定。 不过不同是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动Intent来传递数据。...栈是一种后进先出数据结构,在默认情况下,每当我们启动了一个新活动,它会在返回栈入栈,并处于栈顶位置。...当我们按下Back键或调用finish()方法去销毁一个活动,处于栈顶活动会出栈,这时前一个入栈活动就会重新处于栈顶位置。系统总是会显示处于栈顶活动给用户。...系统仍然会为这种活动保存相应状态和成员变量,但是这并不是完全可靠,当其他地方需要内存,处于停止状态活动有可能会被系统回收。 4.销毁状态 当一个活动从返回栈移除后就变成了销毁状态。

    62130

    备战金九银十:BAT大厂最爱问Android核心面试百题详细解析!

    Activity被销毁后,重新启动,在onCreate方法,接受保存bundle参数,并将之前数据取出。...1.基本数据类型以及对应数组类型 2.可以传递bundle类型,但是bundle类型数据需要实现Serializable或者parcelable接口 44.Serializable 和 Parcelable...Traceview本身只是一个数据分析工具,数据采集则需要使用 AndroidSDK Debug类或者利用 DDMS 工具。 heap工具可以帮助我们检查代码是否存在会造成内存泄漏地方。...,原则是当我们不再使用 Bitmap ,需要回收之。...另外,我们需要注意,2.3 之前 Bitmap 对象与像素数据是分开存放,Bitmap 对象存在java Heap像素数据放在 Native Memory, 这时很有必要调用recycle 回收内存

    1.2K31

    Android开发之Activity生命周期以及加载模式

    一.代码编写 其实这篇博客代码是非常简单,就是重写Activity生命周期不同阶段方法,然后在方法中进行Log打印,从而来标记这个生命周期阶段。...DemoUI也是灰常简单,所以Activitylayout文件就不做过多赘述了。接下来看一下两个Activity关键代码。  ...1.下方代码是MainActivity关键代码,对Activity生命周期不同阶段进行重写,然后打印日志,标记出是哪个Activity哪个方法。...在onCreate()方法通过id获取Button, 然后给按钮绑定上单击事件,点击button转到SecondActivity。具体代码如下。...下方所打印日志就是点击跳转按钮所打印日志。在这个切换过程,MianActivty会停止运行变为不可见,SecondActivy就会被创建并且处于运行状态。具体步骤如下。

    1K70
    领券