當前位置:首頁 » 安卓系統 » android程序退出代碼

android程序退出代碼

發布時間: 2022-08-28 20:34:53

『壹』 安卓軟體Button退出代碼怎麼寫

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
exitBy2Click(); //調用雙擊退出函數
}
return false;
}
/**
* 雙擊退出函數
*/
private static Boolean isExit = false;

private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true; // 准備退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schele(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2000); // 如果2秒鍾內沒有按下返回鍵,則啟動定時器取消掉剛才執行的任務

} else {
finish();
System.exit(0);
}
}

『貳』 在android中怎樣退出activity

我們在項目開發的時候可能會遇到安全退出應用的場景,如何能夠安全退出多個Activity?網上有很多方法,下面這種方法就是我最喜歡的,簡單又易懂。如下:每打開一個Activity,就記錄下來,在需要退出時,關閉每一個Activity即可。使用單例模式創建一個Activity管理對象,該對象中有一個Activity容器。定義一個Application類來存儲Activity對象的引用。代碼如下: public class ExitAppliation extends Application { private List activityList = new LinkedList(); private static ExitAppliation instance; private ExitAppliation() { } // 單例模式中獲取唯一的MyApplication實例 public static ExitAppliation getInstance() { if (null == instance) { instance = new ExitAppliation(); } return instance; } //添加Activity到容器中 public void addActivity(Activity activity) { activityList.add(activity); } // 遍歷所有Activity並finish public void exit() { for (Activity activity : activityList) { activity.finish(); } System.exit(0); } }</activity></activity> 註:Application類是為了那些需要保存全局變數設計的基本類,你可以在AndroidManifest.xml的標簽中進行自己的實現,這樣的結果是:當你的application或者包被建立的時候將引起那個類被建立。就是說application是用來保存全局變數的,並且是在package創建的時候就跟著存在了。所以當我們需要創建全局變數的時候,不需 要再像j2se那樣需要創建public許可權的static變數,而直接在application中去實現。只需要調用Context的getApplicationContext或者Activity的getApplication方法來獲得一個application對象,再做出相應 的處理。 然後在每個Activity的onCreate()方法中添加下面代碼: ExitAppliation.getInstance().addActivity(this); 在需要結束所有Activity的時候調用exit方法: ExitAppliation.getInstance().exit();

『叄』 實現android 再按一次退出程序代碼


private
long
exitTime
=
0;
/**
*
捕捉返回事件按鈕
*
*
因為此
Activity
繼承
TabActivity

onKeyDown
無響應,所以改用
dispatchKeyEvent
*
一般的
Activity

onKeyDown
就可以了
*/
@Override
public
boolean
dispatchKeyEvent(KeyEvent
event)
{
if
(event.getKeyCode()
==
KeyEvent.KEYCODE_BACK)
{
if
(event.getAction()
==
KeyEvent.ACTION_DOWN
&&
event.getRepeatCount()
==
0)
{
this.exitApp();
}
return
true;
}
return
super.dispatchKeyEvent(event);
}
/**
*
退出程序
*/
private
void
exitApp()
{
//
判斷2次點擊事件時間
if
((System.currentTimeMillis()
-
exitTime)
>
2000)
{
Toast.makeText(MainActivity.this,
"再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime
=
System.currentTimeMillis();
}
else
{
finish();
}
}

『肆』 android 怎麼判斷應用是否退出

在Android中退出程序比較麻煩,尤其是在多個Activity的程序中,在2.2之前可以採用如下代碼退出程序:

java代碼

[java]
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());

ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());

此種方法是一種最方便和最簡單的退出程序的辦法,但是在2.2和2.2之後就不能用了,那麼如果我們要退出程序有4種辦法:

採用content
view棧:如果程序是多界面,但是又沒有強制要求每一個界面一個Activity,可以將每個界面設計為一個View,在界面切換時,只需要調用
Activity的setContentView方法設置Activity的Contentview,這樣退出程序只需要將這一個Activity退出
就可以了,但是需要設計一個棧來管理content view。
可以自定義一個Activity的棧,在程序退出時將棧中的所有的Activity進行finish,這種方法,我以前的文章中有詳述。
前兩種方法的精髓之處都是需要自己設計一個棧用來管理界面或者Activity,這樣程序就比較復雜一些。 第3中方法就是,先讓程序到Home界面,然後再將process殺死:代碼如下:

[java]
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(Process.myPid());

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(Process.myPid());

4.還有一種就是使用方法是使用Android的Broadcast機制。在所有的Activity中注冊退出程序的消息,當收到消息時調用finish方法。 然後再有退出程序功能的Activity上廣播關閉消息。代碼如下:

[java]
package com.kingtone.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
* 所有Activity的父類,用來注冊退出程序的廣播事件,
* 並且對收到的退出程序事件進行處理
* @author Administrator
*
*/
public class CommonActivity extends Activity {

//廣播的內部類,當收到關閉事件時,調用finish方法結束activity
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};

@Override
public void onResume() {
super.onResume();
//在當前的activity中注冊廣播
IntentFilter filter = new IntentFilter();
filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
}

package com.kingtone.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
* 所有Activity的父類,用來注冊退出程序的廣播事件,
* 並且對收到的退出程序事件進行處理
* @author Administrator
*
*/
public class CommonActivity extends Activity {

//廣播的內部類,當收到關閉事件時,調用finish方法結束activity
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};

@Override
public void onResume() {
super.onResume();
//在當前的activity中注冊廣播
IntentFilter filter = new IntentFilter();
filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
}

在需要退出程序的Activity(CommonActivity的子類)中,退出程序代碼如下:

[java]
Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出動作
this.sendBroadcast(intent);// 發送廣播
super.finish();
//退出後台線程,以及銷毀靜態變數
System.exit(0);

Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出動作
this.sendBroadcast(intent);// 發送廣播
super.finish();
//退出後台線程,以及銷毀靜態變數
System.exit(0);

監聽並處理用戶按下back鍵的方法

[java]
package com.example.android_test01;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
System.out.println("你按下了back1");
show_simple();
return super.onKeyDown(keyCode, event);
}
//先調用的onKeyDown(int keyCode, KeyEvent event)方法,然後調用的onBackPressed()方法;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
System.out.println("按下back,立刻退出activity時調用");
super.onBackPressed();
}

public void show_simple()
{
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("歡迎使用本軟體");
builder.setPositiveButton("確定", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//退出應用;
finish();
}
});
builder.setNegativeButton("取消", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}) ;
builder.create().show();

}
}

package com.example.android_test01;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
System.out.println("你按下了back1");
show_simple();
return super.onKeyDown(keyCode, event);
}
//先調用的onKeyDown(int keyCode, KeyEvent event)方法,然後調用的onBackPressed()方法;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
System.out.println("按下back,立刻退出activity時調用");
super.onBackPressed();
}

public void show_simple()
{
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("歡迎使用本軟體");
builder.setPositiveButton("確定", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//退出應用;
finish();
}
});
builder.setNegativeButton("取消", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}) ;
builder.create().show();

}
}

『伍』 安卓程序退出代碼

Android2.2版本
Intent
startMain
=
new
Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);//退出程序
Android2.2以下版本
1、在配置文件中加入許可權:
<uses-permission
android:name="android.permission.RESTART_PACKAGES"
/>
2、ActivityManager
am
=
(ActivityManager)getSystemService
(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());

『陸』 怎麼在android實現退出功能

Android Studio中,隨時隨地的退出程序(記得導入相應的包,可以設置自動導入所需的包的,下面的代碼還沒有導入包的部分):

①新建一個 ActivityCollector 類,作為活動管理器,代碼如下所示:
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<>();

public static void addActivity(Activity activity) {
activities.add(activity);
}

public static void removeActivity(Activity activity) {
activities.remove(activity);
}

public static void finishAll() {
for (Activity activity : activities)
{

if(!activity.isFinishing())
{
activity.finish();
}
}
activities.clear();

//以下是殺死當前程序進程的代碼,保證程序徹底退出。
android.os.Process.killProcess(android.os.Process.myPid());
}
}
②再新建一個類BaseActivity,並讓所有活動繼承這個類,也就是其他的全部活動都改為extends BaseActivity,而不是原來的extends AppCompatActivity。

public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getClass().getSimpleName());
ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}

}
③在你想要退出程序的頁面(Activity)的setContentView(R.layout.*****); 下面加上如下代碼,從而實現點擊一個按鈕退出整個程序。
Button button3 = (Button) findViewById(R.id.*****);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
//*號部分看具體情況而定

『柒』 Android 怎麼退出整個應用程序

1.後面添加了一個菜單返回功能鍵,這個方法也只能用system.exit(0)來關閉當前活動的Activity,附代碼:
public boolean onCreateOptionsMenu(Menu menu)
{

super.onCreateOptionsMenu(menu);
MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit");
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
System.exit(0);
return true;
}
});
return true;
}

2.這樣太不方便,每次退出界面之後應用程序還在運行,
網上提供了幾種方法,將下面SysApplication這個類復制到工程裡面,然後在每個Acitivity的oncreate方法裡面通過SysApplication.getInstance().addActivity(this); 添加當前Acitivity到ancivitylist裡面去,最後在想退出的時候調用SysApplication.getInstance().exit();可直接關閉所有的Acitivity並退出應用程序。
附代碼:
import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Application;
import android.content.DialogInterface;
import android.content.Intent;

public class SysApplication extends Application {
private List mList = new LinkedList();
private static SysApplication instance;

private SysApplication() {
}
public synchronized static SysApplication getInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}

public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
3.在應用程序裡面 的activity的oncreate裡面添加SysApplication.getInstance().addActivity(this)
如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}

熱點內容
越容易壓縮 發布:2025-01-13 07:37:37 瀏覽:557
ecstore資料庫 發布:2025-01-13 07:29:43 瀏覽:296
手機設置密碼忘記了怎麼解開 發布:2025-01-13 07:28:29 瀏覽:19
存儲卡交流 發布:2025-01-13 07:16:06 瀏覽:984
php字元串浮點數 發布:2025-01-13 07:15:28 瀏覽:998
python排序cmp 發布:2025-01-13 07:09:04 瀏覽:72
雲腳本精靈 發布:2025-01-13 07:03:27 瀏覽:619
高維訪問 發布:2025-01-13 07:03:23 瀏覽:975
保衛蘿卜有腳本嗎 發布:2025-01-13 06:30:29 瀏覽:743
天貓上傳 發布:2025-01-13 06:06:35 瀏覽:156