2

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

在其他一些活动中,我使用 EXIT 按钮和正确的代码退出。即使我在这些活动上单击“退出”按钮,它也会开始登录活动。(登录页面打开)

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

1) 主要

2) 屏幕活动

3) 登录

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

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

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();
}
}

屏幕活动:

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();  

}  
}

请任何人解释这个问题以及如何解决它?我不明白。

4

1 回答 1

2

放置finish()在您的loginActivity和其他Activities以及其他堆栈中将存储访问列表Activities

于 2013-01-21T09:37:14.140 回答