我制作了一个包含两个活动和一个SQLite数据库的android项目。活动一包含选择按钮活动二打开按钮的按钮。问题是每当我从ActivityTwo转到ActivityOne然后再转到ActivityTwo时,应用程序消耗的RAM会不断增加。请帮忙。 这是代码
MainActivity.java
package exm.sqliteex.sql.sqliteex;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.File;
public class MainActivity extends Activity implements View.OnClickListener {
SQLiteHelper db1;
SQLiteDatabase wag5db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b22 = (Button) findViewById(R.id.b2);
Button b33 = (Button) findViewById(R.id.b3);
b22.setOnClickListener(this);
b33.setOnClickListener(this);
File database = getApplicationContext().getDatabasePath("wag5locotsd.db");
if (database == null) {
Toast.makeText(getApplicationContext(), "Database does not exists", Toast.LENGTH_LONG).show();
db1 = new SQLiteHelper(this);
filltable1(db1);
}
public void onClick(View v) {
if(v.getId() == R.id.b2 ) {
Toast.makeText(getApplicationContext(),"tsd clicked",Toast.LENGTH_LONG).show();
String tripreason = "qlmdrops";
Intent idj = new Intent(getApplicationContext(),Activity_two.class);
idj.putExtra("codefinder", tripreason);
startActivity(idj);
return;
}
if(v.getId() == R.id.b3 ) {
String tripreason = "qop1drops";
Intent idj = new Intent(getApplicationContext(),Activity_two.class);
idj.putExtra("codefinder", tripreason);
startActivity(idj);
return;
}
}
public void filltable1(SQLiteHelper db1){
Log.d("fill table","started filltable()");
db1.addwag5tsd(9,"qlmdrops",
"a) चेक करो कि Transformer और GR मे तेल का बिखराव या तेल का लीकेज तो नही है," +" ऑईल ट्रेप चेमबर मे तेल का बिखराव तो नही है। Transformer, CGR व RGR और बस बार कनेकशन इत्यादी मे कोइ अन्य खराबी तो नही है ईसकी जॉच करो।\n" +
"a) यदि कोई खराबी है या तेल का बिखराव है तो सहायता मांगो।\n" +"b) यदि कोई खराबी नही पाई जाती है तो रीले रीसेट करके डीजे क्लोज करो।\n" +
"यदि QLM फिर से डॉप होती है तो सहायता मांगो ।\n" +
"NOTE: QLM को केवल एक ही बार रीसेट किया जा सकता है। \n" +
"2) QLM किसी अन्य रीले के साथ डॉप होती है और डीजे ट्रिप होता है ।\n" +
"फीडिंग सर्किट को चेक करे कि कही टेप चेंजर / मेन ट्रांसफोर्मर का तेल बिखरा तो नही है, तथा उनका तेल लेवल सही है। GR सेफटी वाल्व ब्लो तो नही कर रहा" +
" है, CGR और उनके आर्कचूट कवर सही है, मेंन बुशिंग / इंसुलेटर तथा किसी उपकरण में से धुऑ चिंगारी निकल रही है।\n" +
"a)यदि तेल बिखरा है तो सहायता मांगो।\n" +
"b)यदि किसी सम्बंधित साधन में कोइ खराबी मिलती है तो उस साधन को आईसोलेट करो, रीले को रीसेट करो और सावधानीपूर्वक कार्य करो,\n" +
"c)यदि सम्बंधित साधन में कोइ खराबी नही मिलती है तो रीले को रीसेट करो, सेक्शन क्लीयर करके सहायता मांगो।\n" +
"d)यदि किसी B क्लास स्टेशन पर ही QLM किन्ही दूसरी रीले के साथ ड्रोप होती है तो वही पर सहायता मांग लो।\n" +
"a)यदि कोई असामान्यता मिलती है तो लोको फेल करे।\n" +
"b)यदि कोई असामान्यता नही मिलती है तो ट्रेक्शन पावर सर्किट / ऑक्सीलरी सर्किट में खराबी ढूढे ।\n" +
"c)यदि कोई खराबी मिलती है तो खराबी वाले उपकरण को आईसोलेट करें, रीले को रीसेट करें व गाडी चलाए।\n" +
"d)यदि कोई खराबी नही मिलती है तो रीले रीसेट करें और गाडी चलाए।\n" +
"e)नजदीकी सम्भव स्थान पर मेंटेनेंस स्टाफ द्वारा लोको का पूर्ण निरीक्षण किया जाए।\n" +
"2(i) QLM किसी अन्य रीले के साथ दूबारा ड्रॉप होती है और डीजे ट्रिप होता है।\n" +
"लोको फेल करे, रीले को रीसेट न करे। सहायता माँगें।","");
db1.addwag5tsd(12,"qop1drops",
"सम्बंधित उपकरणो RSI-1, SL-1, L-1, L-2, L-3, TM-1, TM-2, TM-3, J-1, Q-20, SJ, CTF-1-2-3, QD-1 को चेक करे कि उनमें कोई खराबी तो " +
"नही है अथवा धातू का कोई टुकडा इत्यादी किसी उपकरण को लोको बॉडी से शॉर्ट तो नही कर रहा है।\n" +
"A)यदि कोई खराबी है तो सम्बंधित उपकरण को आईसोलेट करो और सावधानीपूर्वक कार्य करो।\n" +
"B)यदि कोई खराबी नही है तो रीले रीसेट करो।\n" +
"i)यदि QOP-1 रीसेट नही होती है तो HQOP-1 को OFF पर रखकर रीले रीसेट करो, सावधानीपूर्वक कार्य करें तथा अवसर मिलने पर TLC को सूचित करें।\n" +
"ii)यदि QOP-1 रीसेट हो जाती है तो DJ क्लोज करो और ट्रेकशन चालू करो।\n" +
"यदि QOP-1 फिर से ड्रॉप होती है और DJ ट्रिप होता है तो खराबी फिर से चेक करो और कोई खराबी नही पाई जाती है तो रीले रीसेट करो।\n" +
"HMCS-1 की पोजीशन बदलकर और ट्रेकशन चालू करके खराबी वाली ट्रेकशन मोटर का पता लगाओ। खराबी वाली ट्रेकशन मोटर को आईसोलेट कर " +
"दो। अगले सुविधाजनक स्टॉप पर TLC को सूचित करो।\n" +
"यदि HMCS-1 की सभी पोजीशन पर QOP-1 ड्रॉप होती है और कोई खराबी नही मिलती है तो HMCS-1 को सामान्य पोजीशन पर रखो," +
" और HQOP-1 को OFF पर रखो। TM तथा HT कम्पार्ट्मेंट में धुआ इत्यादी का ध्यान रखते हुए गाडी चलाओ और TLC को सूचित करो।\n" +
"नोट:\n" +
"a)अगर ट्रबलशूटिंग के दौरान या आगे कही भी गाडी खडी हो जाती है सहायक चालक नीचे उतर कर जब चालक फिर गाडी" +
" स्टार्ट करने के लिए 2/3 नॉच ले तब सुनिश्चित करे कि सभी व्हील बराबर (freely) घूम रहे है तथा TM मे कोई खराबी नही है।\n" +
"b)यदी TM अथवा HT कम्पार्ट्मेंट में धुऑ दिखाई देता है तो सहायता माँगों।","");
@Override
protected void onDestroy() {
Toast.makeText(getApplicationContext(),"on destroy called,डेटाबेस क्लोज",Toast.LENGTH_LONG).show();
System.gc();
db1.close();
super.onDestroy();
}
}
ActivityTwo.java
package exm.sqliteex.sql.sqliteex;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by Richie on 28-Mar-15.
*/
public class Activity_two extends Activity {
TextView djdspview;
SQLiteHelper db1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_two);
djdspview = (TextView) findViewById(R.id.display);
Intent intent_solution = getIntent();
String djcode = intent_solution.getStringExtra("codefinder");
db1 = new SQLiteHelper(this);
String djdsplytxt = db1.getdetails(djcode);
//Typeface tpfordjdsply=Typeface.createFromAsset(getAssets(),"fonts/mangal.TTF");
djdspview.setText(djdsplytxt);
djcode = null;
db1 = null;
//djdspview.setTypeface(tpfordjdsply);
}
protected void onStop() {
Toast.makeText(getApplicationContext(), "on stop() called", Toast.LENGTH_LONG).show();
djdspview.setText("");
System.gc();
super.onStop();
}
}
SQLiteHelper.java
package exm.sqliteex.sql.sqliteex;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Richie on 18-Feb-15.
*/
public class SQLiteHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "wag5loco";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "wag5tsd";
public static final String UID = "id";
public static final String PROBLEM = "problem";
public static final String SOLUTION = "solution" ;
public static final String EXTRAS = "extras";
SQLiteHelper(Context context) {
super(context, DATABASE_NAME, null,DATABASE_VERSION );
Log.d("SQLiteHelper", "constructor called");
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS wag5tsd (id INTEGER PRIMARY KEY AUTOINCREMENT, problem TEXT, solution NVARCHAR, extras TEXT);";
db.execSQL(CREATE_TABLE);
Log.d("db",TABLE_NAME + "created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion) {
Log.d("updating table","method on upgrade updating table");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
SQLiteDatabase db = this.getWritableDatabase();
public void addwag5tsd(int _id,String prb,String solve , String extra){
Log.d("method addrecord","adding record to wag5tsd");
ContentValues values = new ContentValues();
values.put(UID, _id);
values.put(PROBLEM, prb);
values.put(SOLUTION, solve);
values.put(EXTRAS, extra);
db.insert(TABLE_NAME, null, values);
}
public String getdetails(String probtext){
Cursor cursor = db.query(TABLE_NAME, new String[]{UID,PROBLEM,SOLUTION,EXTRAS},PROBLEM+"=?",new String[]{String.valueOf(probtext)},null,null,null,null);
cursor.moveToFirst();
String csr1 = cursor.getString(cursor.getColumnIndex(SOLUTION));
String csr2 = cursor.getString(cursor.getColumnIndex(EXTRAS));
return csr1+csr2;
}
db.execSQL(CREATE_TABLE);
}
return reccnt;
}
}