gpt4 book ai didi

java - 应用程序被重复打开

转载 作者:行者123 更新时间:2023-11-30 09:27:40 26 4
gpt4 key购买 nike

我正在开发一个应用程序。当我退出应用程序时,它将再次打开(第一个 Activity 被一次又一次地调用)。所以我无法退出。

在其他一些 Activity 中,我使用退出按钮和适当的代码退出。即使我在这些 Activity 上单击退出按钮,它也会开始登录 Activity 。 (登录页面打开)

在我的应用程序中,我使用

1)主要

2) 屏幕 Activity

3) 登录

流程:(从main->screenActivity->login)

起始页(第一个 Activity )发布在下面

public class main extends Activity {
static ConnectivityManager conMgr;

BackgroundThread backgroundThread;
TextView myText;
boolean myTextOn = true;
Cursor cursor;
String response="";
public SQLiteAdapter mySQLiteAdapter;

private SQLiteDatabase sqLiteDatabase;
SimpleCursorAdapter cursorAdapter;

public class BackgroundThread extends Thread {

boolean running = false;



void setRunning(boolean b){
running = b;
}

@Override
public void run() {
// TODO Auto-generated method stub
//super.run();
while(running){
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(Exception e)
{

}
handler.sendMessage(handler.obtainMessage());
}
}

}

Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
//super.handleMessage(msg);
if (myTextOn){
myTextOn = false;
myText.setVisibility(View.GONE);
}
else{
myTextOn = true;
myText.setVisibility(View.VISIBLE);
}
}

};



@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thread);

myText = (TextView)findViewById(R.id.mytext);




}



@Override
protected void onStart() {
conMgr = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
// TODO Auto-generated method stub
super.onStart();
if(isInternetAvailable())
{
Toast.makeText(this, "online", Toast.LENGTH_LONG).show();

startActivity(new Intent(main.this, ScreenActivity.class));
}
else{

startActivity(new Intent(main.this, splashscreen.class));

Toast.makeText(this, "offline", Toast.LENGTH_LONG).show();

}


backgroundThread = new BackgroundThread();
backgroundThread.setRunning(true);
backgroundThread.start();

}



private boolean isInternetAvailable() {
ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;

}



@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();

boolean retry = true;
backgroundThread.setRunning(false);

while(retry){
try {
backgroundThread.join();
retry = false;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(Exception e)
{

}

}



}

public void onDEstroy()
{
super.onDestroy();
}
}

屏幕 Activity :

public class ScreenActivity extends Activity implements AnimationListener {
private TextView animatedView3;
//ImageView image;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);



/* Animation animation1 = AnimationUtils.loadAnimation(this,
R.anim.anima);
animation1.setAnimationListener(this);
View animatedView1 = findViewById(R.id.aet1);
animatedView1.startAnimation(animation1);


/** set time to splash out */


final int welcomeScreenDisplay = 9000;
/** create a thread to show splash up to splash time */
Thread welcomeThread = new Thread() {

int wait = 0;

@Override
public void run() {
try {
super.run();
/**
* use while to get the splash time. Use sleep() to increase
* the wait variable for every 100L.
*/
while (wait < welcomeScreenDisplay) {
sleep(100);
wait += 100;
}
} catch (Exception e) {
System.out.println("EXc=" + e);
} finally {
/**
* Called after splash times up. Do some action after splash
* times up. Here we moved to another main activity class
*/
startActivity(new Intent(ScreenActivity.this,
login.class));

}
}
};
welcomeThread.start();

}

public void onAnimationStart(Animation animation) {

}

public void onAnimationEnd(Animation animation) {
//Toast.makeText(this, "Animation ended", Toast.LENGTH_SHORT).show();
if (animatedView3.getVisibility() == View.VISIBLE) {
animatedView3.setVisibility(View.INVISIBLE);
} else {
animatedView3.setVisibility(View.VISIBLE);
}
}

public void onAnimationRepeat(Animation animation) {
// Toast.makeText(this, "Animation rep", Toast.LENGTH_SHORT).show();

}
}

谁能解释一下这个问题以及如何解决它?我没听懂。

最佳答案

finish() 放在您的 loginActivity 中,对于其他 Activities 以及其他堆栈将存储访问过的 Activities.

关于java - 应用程序被重复打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com