2

私はアプリケーションを開発しています。アプリケーションを終了すると、再び開かれます (最初のアクティビティが何度も呼び出されます)。そのため、そこから抜け出すことができませんでした。

他のいくつかのアクティビティでは、終了ボタンと適切なコードを使用して終了します。それらのアクティビティの EXIT ボタンをクリックしても、ログイン アクティビティが開始されます。(ログインページが開きます)

私のアプリケーションでは、私は使用します

1) メイン

2) スクリーンアクティビティ

3) ログイン

フロー: (main->screenActivity->login から)

開始ページ(第 1 活動)は以下に掲載されています

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 に答える