android活动内存管理

时间:2015-04-08 16:36:49

标签: android memory

我制作了一个包含两个活动和一个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;
    }
}

0 个答案:

没有答案