我的应用使用WifiInfo
类来获取已连接网络的Wifi SSID。
如果用户想要,它会存储在一个名为WifiList的ArrayList
位置。
使用自定义名称,在另一个名为savedName的ArrayList中的相同位置。
现在,每当我打开应用程序时,它都会检查数组列表中是否存在Wifi SSID,并向我显示同一位置的特定自定义名称。
两个列表都通过TinyDB存储在共享首选项中。 这就是我在Android中存储数据的方式。使用sqlite数据库似乎没有意义用于这样简单的应用程序。
所以我现在需要的是一种在一个自定义名称下保存众多WiFi SSID的逻辑或方法。就像当我连接到WiFi A或WiFi B时,它必须显示“狗”和“狗”。和用于“猫”的WiFi C和E,F,G用于'小鼠'
如何存储这组数据以及我应该在哪里存储?
package combined.locky;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.IBinder;
import android.widget.Toast;
import java.util.ArrayList;
public class LockyService extends Service
{
//ANDROID VARIABLES
public Context context;
public static TinyDB tinyDB;
public static WifiManager wifiManager;
public static WifiInfo wifiInfo;
//PROGRAM VARIABLES
public static ArrayList<String> savedWifiList = new ArrayList<>(100);
public static ArrayList<String> savedContextList = new ArrayList<>(100);
@Override
public void onCreate()
{
//CRITICAL INITIALISATION
super.onCreate();
context = getApplicationContext();
tinyDB = new TinyDB(context);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_BOOT_COMPLETED);
filter.addAction(Intent.ACTION_SCREEN_ON);
LockyReceiver receiver = new LockyReceiver();
registerReceiver(receiver, filter);
//ANDROID INITIALISATION
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
wifiInfo = wifiManager.getConnectionInfo();
//FINALLY AFTER CREATING SERVICE
Toast.makeText(context, "Locky Service Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onLowMemory()
{
tinyDB.putListString("savedWifiList", LockyService.savedWifiList);
tinyDB.putListString("savedContextList", LockyService.savedContextList);
super.onLowMemory();
}
@Override
public void onDestroy()
{
tinyDB.putListString("savedWifiList", LockyService.savedWifiList);
tinyDB.putListString("savedContextList", LockyService.savedContextList);
Toast.makeText(context, "Locky Service Killed", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
这里是我使用arraylists的示例代码。我想将一个名称映射到不同的已保存的Wifi SSID。我不知道从哪里开始。
答案 0 :(得分:0)
我没有弄清楚你的问题究竟是什么,所以请Clarey更多,以便为你提供特定的帮助,但根据我对你的理解问题:
您要存储的数据大小并不大,所以我认为共享首选项是最佳解决方案,您已经在使用它。
另一种解决方案是将您的数据存储在a file and read/write from it。
中如果您有复杂的关系数据,那么您应该使用SQLite。
如果您想使用NoSQL方法,还可以使用Realm简单高效的数据存储解决方案SnappyDB它是SQLite的替代方案。< / p>
但是对于少量键/值对数据共享首选项是最佳解决方案,您也可以使用TinyDB来简化对一行代码中对SharedPreferences的调用。
如果您的问题是如何从SharedPreferences中存储和检索ArrayList can check this question
答案 1 :(得分:-3)
如果要在本地存储数据,可以使用SQLite数据库。它适用于Android和iOS,易于存储和管理。