2013-03-27 61 views
0

我想在用户从主屏幕按下返回键时结束我的应用程序。我尝试使用System.exit(0),但它似乎没有工作。如何在android中手动结束应用程序?

我需要手动结束我的应用程序?

package com.mahavega.qcdemo; 


import com.mahavega.qcdemo.R; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.GestureDetector; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.View.OnClickListener; 
import android.widget.ImageView; 

public class MainActivity extends Activity implements OnClickListener { 
    private GestureDetector gestureDetector; 
     View.OnTouchListener gestureListener; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     gestureDetector = new GestureDetector(this, new MyGestureDetector()); 
     gestureListener = new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       return gestureDetector.onTouchEvent(event); 
      } 
     }; 
     ImageView ad = (ImageView) findViewById(R.id.imageView1); 
     ImageView im2 = (ImageView) findViewById(R.id.imageView2); 
     ImageView im3 = (ImageView) findViewById(R.id.imageView3); 
     ImageView im4 = (ImageView) findViewById(R.id.imageView4); 
     ImageView im5 = (ImageView) findViewById(R.id.imageView5); 
     ad.setOnClickListener(MainActivity.this); 
     im2.setOnTouchListener(gestureListener); 
     im2.setOnClickListener(MainActivity.this); 
     im3.setOnTouchListener(gestureListener); 
     im3.setOnClickListener(MainActivity.this); 
     im4.setOnTouchListener(gestureListener); 
     im4.setOnClickListener(MainActivity.this); 
     im5.setOnTouchListener(gestureListener); 
     im5.setOnClickListener(MainActivity.this); 
     ad.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       startActivity(new Intent(MainActivity.this, Adds.class)); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
    class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
     { 
      float sensitvity = 50; 
      if((e1.getX() - e2.getX()) < sensitvity){ 
       startActivity(new Intent(MainActivity.this, Login.class)); 
      } 

      return super.onFling(e1, e2, velocityX, velocityY); 
     } 

    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 


    } 
    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     System.exit(0); 
     finish(); 
     super.onBackPressed(); 
     } 


    } 

这是我的全部代码

+0

如何在主屏幕上按回退键关闭您的应用程序?为了使'onBackPressed()'工作,它使用的Activity应该是_running_。如果您在主屏幕上,您的应用可能会被_paused_或_stopped_。 – 2013-03-27 11:14:26

+0

我的意思是我的应用程序的主屏幕 – o3n 2013-03-27 11:16:24

+1

那么你应该在OP中指定那个? ;-)除非另有说明,否则主屏幕将被用于Android主屏幕。 – 2013-03-27 11:18:22

回答

2
+1

当然'finish()'是首选的解决方案,但在可能是op的简单情况下,System.exit()也应该可以工作,正如他所说的那样,它不是......所以它看起来他的回调是永远不会被调用(因此,如果他调用finish(),System.exit()或MyNullObject.method(),它还没有问题。 – mah 2013-03-27 11:19:14

+0

对不起,快速阅读这个问题。回答更有意义 – chopchop 2013-03-27 11:30:11

3

根据您在/ building上运行的Android版本,您可能需要为您的Activity添加一些帮助来捕获后退按钮。添加此功能提供了帮助:

  @Override 
      public boolean onKeyDown(int keyCode, KeyEvent event) { 
       if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 
         && keyCode == KeyEvent.KEYCODE_BACK 
         && event.getRepeatCount() == 0) { 
        onBackPressed(); 
       } 

       return true; 
      } 
+0

android.os.Build.VERSION.SDK被折旧 – o3n 2013-03-27 11:31:13

+0

在这种情况下,你可以删除版本检查,因为你所做的只是终止应用程序。如果你做的更多,没有版本检查,你会想要确保你的onBackPressed没有为单个后退键事件运行两次(如果没有这个检查,这会发生在SDK 5和更高版本上)。 – mah 2013-03-27 11:34:12

0
public static final void android.os.Process.killProcess(int pid) 

简单,可行,你想要做什么。但请注意,不建议在Android上明确退出应用程序。 (通用GUI应用程序只在最上面的Activity中调用finish(),并让OS决定何时退出应用程序进程。)

0

在Activity上调用moveTaskToBack(true)(它从屏幕退出应用程序,但不销毁它)

相关问题