String []关闭App

时间:2017-11-20 20:07:51

标签: java android arrays sharedpreferences

我一直试图找出应用关闭后保存字符串数组的最佳方法,并在再次打开时检索相同的字符串信息。上下文是我已经弄清楚如何从网站解析数据并将其存储在字符串数组中,但是我希望能够在用户没有Internet访问权限的情况下保存字符串数组字符串数组可以被检索。

这是在java中的android工作室中完成的 - 只是做得很清楚

我一直在研究共享优先方法,但没有一个有效的解决方案。如果有人可以帮助我,我将不胜感激!

让我们说字符串数组是:

String[] webValues = new String[(this value can be very large)];

我希望存储整个字符串数组并检索整个字符串数组,然后能够通过活动中的特定索引调用数组。

2 个答案:

答案 0 :(得分:0)

我认为SharedPreferences不允许您编写数组,因此您必须使用putString函数单独编写每个值,或者在API级别11或更高版本中使用{ {1}}用于保存putStringSet个字符串,但如果您将Set转换为Array,则会删除所有重复项。我建议你的情况是使用索引作为键单独存储每个字符串,所以这样的东西应该可以用来保存数据

Set

并加载数组

public boolean saveArray(String[] array, String arrayName, Context mContext) {   
  SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
  SharedPreferences.Editor editor = prefs.edit();  
  editor.putInt(arrayName +"_size", array.length);  
  for(int i=0;i<array.length;i++)  
    editor.putString(arrayName + "_" + i, array[i]);  
  return editor.commit();  
} 

取自Is it possible to add an array or object to SharedPreferences on Android

的帖子https://stackoverflow.com/users/833622/sherif-elkhatib

答案 1 :(得分:0)

使用ArrayList而不是String数组,更容易。

然后将你的arraylist转换为Set并使用它:

import React from 'react'
import { shallow, mount } from "enzyme"
import { MemoryRouter, withRouter } from 'react-router-dom'
import { authenticationRequired } from './AuthenticationHOC'
import createRouterContext from 'react-router-test-context'
import sinon from 'sinon'

// dummy component to be wrapped during tests
class WrappedComponent extends React.Component {
  render() {
    return <div>WrappedComponent</div>
  }
}

describe('AuthenticationHOC', () => {
  describe('authenticationRequired', () => {
    let props;
    const context = createRouterContext();
    const renderedMount = () => {
      return mount( authenticationRequired(<WrappedComponent {...props} />), { context } )
    }
    const spy = sinon.spy(authenticationRequired(<WrappedComponent {...props} />).prototype, 'componentWillReceiveProps');

    it('renders the wrapped component', () => {
      let wrapper = renderedMount()
      expect(wrapper.contains(<WrappedComponent {...props} />)).toBe(true)
    })

  describe("when user_id doesn't exist", () => {
    beforeEach(() => {
      props = {
        user_id: ''
      }
    });
    it('should go to the login page', () => {
      //how to test the method componentWillReceiveProps
      let wrapper = renderedMount();
      wrapper.setProps({
        user_id: ''
      });
      //expect(wrapper.instance().props().history).toBe(1)
      expect(context.router.history.location.pathname).toBe('/login');
    })
  })

获取值:

   SharedPreferences.Editor editor = shared.edit();
   Set<String> set = new HashSet<String>();
   set.addAll(yourArrayList);
   editor.putStringSet("values", set);
   editor.apply();