Java Android程序设计错误
我目前正在为android开发一种数据库应用程序。但是,由于条目数量非常少,我觉得不需要使用Sqlite数据库。 现在,我在Java Android程序设计错误,java,android,coding-style,Java,Android,Coding Style,我目前正在为android开发一种数据库应用程序。但是,由于条目数量非常少,我觉得不需要使用Sqlite数据库。 现在,我在onCreate()方法中有了保存文件的“读取”。 但当我将手机从水平显示模式切换到垂直显示模式时,这也会加载新文件,虽然这不会对性能产生很大影响,因为我没有那么多条目,但仍然会困扰我,因为我希望以正确的方式进行操作 “正确”的方法是什么 private TableLayout tblLayout; private ArrayList<Entry> listO
onCreate()
方法中有了保存文件的“读取”。
但当我将手机从水平显示模式切换到垂直显示模式时,这也会加载新文件,虽然这不会对性能产生很大影响,因为我没有那么多条目,但仍然会困扰我,因为我希望以正确的方式进行操作
“正确”的方法是什么
private TableLayout tblLayout;
private ArrayList<Entry> listOfEntries;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tblLayout = new TableLayout(this);
// this basically populates my ArrayList
listOfEntries = readFromFile(saveFile);
setContentView(tblLayout);
}
private TableLayout tblLayout;
私有ArrayList入口列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
tblLayout=新的表格布局(本);
//这基本上填充了我的ArrayList
listOfEntries=readFromFile(保存文件);
setContentView(tblLayout);
}
将以下内容添加到活动的清单节点:(您在AndroidManifest文件中声明了活动的位置):
当设备旋转时,它将阻止再次调用onCreate()。这样可以防止在方向改变时再次阅读
那么。在“活动”中,如果要进行任何特定的更改(应在更改方向时发生),请重写onConfiguration Changed()
方法:
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
}
有许多线程可以建议您如何处理方向变化,如:
希望这有帮助 您可以从应用程序类使用OnCreate()
来加载文件。此方法只执行一次
[代码示例]
MyApplication.java
package.com.example.sunday;
导入java.util.ArrayList;
导入android.app.Application;
公共类MyApplication扩展了应用程序{
公共阵列列表入口列表;
@凌驾
public void onCreate(){
super.onCreate();
readFromFile(savedFile);
}
//在此处某处定义readFromFile(文件f)
}
MainActivity.java
package.com.example.sunday;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.os.Bundle;
公共类MainActivity扩展了活动{
ArrayList入口列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication a=(MyApplication)getApplication();
条目列表=a.条目列表;
}
}
在AndroidManifest.xml中,您必须“注册”MyApplication类:
<application android:name=".MyApplication"
...
...
我认为最简单的解决方案是:
private TableLayout tblLayout;
private ArrayList<Entry> listOfEntries;
private boolean isFileLoaded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tblLayout = new TableLayout(this);
if(!isFileLoaded){
listOfEntries = readFromFile(saveFile);
isFileLoaded = true;
}
setContentView(tblLayout);
}
private TableLayout tblLayout;
私有ArrayList入口列表;
私有布尔值isFileLoaded=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
tblLayout=新的表格布局(本);
如果(!isFileLoaded){
listOfEntries=readFromFile(保存文件);
isFileLoaded=true;
}
setContentView(tblLayout);
}
但我仍然会像中一样使用应用程序类,它让我有机会在不同的java文件中“隐藏”readFromFile方法,使我的Activity.java文件更干净 太棒了,谢谢你!但是,您提供的被覆盖的onConfigurationChanged()
不起任何作用,因此可以忽略它。
package com.example.sunday;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
ArrayList<Entry> listOfEntries;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication a = (MyApplication) getApplication();
listOfEntries = a.listOfEntries;
}
}
<application android:name=".MyApplication"
...
...
private TableLayout tblLayout;
private ArrayList<Entry> listOfEntries;
private boolean isFileLoaded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tblLayout = new TableLayout(this);
if(!isFileLoaded){
listOfEntries = readFromFile(saveFile);
isFileLoaded = true;
}
setContentView(tblLayout);
}