国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android快速退出APP的幾種方式

這篇具有很好參考價(jià)值的文章主要介紹了Android快速退出APP的幾種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

方式一

將主活動(dòng)設(shè)置為SingleTask模式,可以確保每次啟動(dòng)主活動(dòng)時(shí),都是同一個(gè)實(shí)例,提高了內(nèi)存利用率。在退出的活動(dòng)中,可以通過Intent將返回主活動(dòng),并且重寫主活動(dòng)的onNewIntent方法,在其中加入一句finish()結(jié)束。

  1. 在AndroidManifest.xml文件中將主活動(dòng)設(shè)置為SingleTask模式:
<activity android:name=".MainActivity"
          android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. 在退出的活動(dòng)中,通過Intent返回到主活動(dòng):
public class ExitActivity extends AppCompatActivity {

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

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ExitActivity.this, MainActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        });
    }
}
  1. 在MainActivity中重寫onNewIntent方法,在其中加入一句finish():
public class MainActivity extends AppCompatActivity {

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

        MyApplication.getInstance().addActivity(this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        finish();
    }
}

這樣,每次返回到主活動(dòng)時(shí),都會(huì)關(guān)閉上一個(gè)實(shí)例,確保內(nèi)存利用率。

方式二

通過廣播來完成退出功能,接受廣播后退出
可以通過發(fā)送一個(gè)自定義的廣播來實(shí)現(xiàn)退出應(yīng)用程序的功能。具體實(shí)現(xiàn)步驟如下:

  1. 在MyApplication中添加發(fā)送廣播的方法:
public void sendExitBroadcast() {
    Intent intent = new Intent("com.example.exit");
    sendBroadcast(intent);
}
  1. 在需要退出應(yīng)用程序的地方調(diào)用MyApplication.getInstance().sendExitBroadcast()方法,發(fā)送廣播:
public class ExitActivity extends AppCompatActivity {

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

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyApplication.getInstance().sendExitBroadcast();
            }
        });
    }
}
  1. 在MyApplication中注冊(cè)廣播接收器,接收廣播后退出應(yīng)用程序:
public class MyApplication extends Application {

    private static MyApplication instance;
    private Stack<Activity> activityStack;
    private BroadcastReceiver exitReceiver;

    private MyApplication() {
        activityStack = new Stack<>();
    }

    public static synchronized MyApplication getInstance() {
        if (instance == null) {
            instance = new MyApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activityStack.push(activity);
    }

    public void exit() {
        while (!activityStack.isEmpty()) {
            Activity activity = activityStack.pop();
            activity.finish();
        }
        System.exit(0);
    }

    public void sendExitBroadcast() {
        Intent intent = new Intent("com.example.exit");
        sendBroadcast(intent);
    }

    @Override
    public void onCreate() {
        super.onCreate();

        exitReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                exit();
            }
        };
        registerReceiver(exitReceiver, new IntentFilter("com.example.exit"));
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        unregisterReceiver(exitReceiver);
    }
}

這樣,當(dāng)發(fā)送廣播時(shí),MyApplication中的廣播接收器就會(huì)接收到廣播并退出應(yīng)用程序。

方式三

定義一個(gè)棧,寫一個(gè)自定義的MyApplication,利用單例模式去單獨(dú)對(duì)Activty進(jìn)行管理,在每個(gè)Activity的onCreate()方法中調(diào)用MyApplication.getInstance().addActivity(this)將當(dāng)前的Activity添加到棧中統(tǒng)一管理,如果需要退出應(yīng)用程序時(shí)再調(diào)用MyApplication.getInstance().exit()方法直接就完全退出了應(yīng)用程序。
需要退出時(shí)只要把進(jìn)棧的活動(dòng)一個(gè)個(gè)循環(huán)退出就可以。
以下是實(shí)現(xiàn)代碼:

public class MyApplication extends Application {

    private static MyApplication instance;
    private Stack<Activity> activityStack;

    private MyApplication() {
        activityStack = new Stack<>();
    }

    public static synchronized MyApplication getInstance() {
        if (instance == null) {
            instance = new MyApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activityStack.push(activity);
    }

    public void exit() {
        while (!activityStack.isEmpty()) {
            Activity activity = activityStack.pop();
            activity.finish();
        }
        System.exit(0);
    }
}

在每個(gè)Activity的onCreate()方法中調(diào)用MyApplication.getInstance().addActivity(this):

public class MainActivity extends AppCompatActivity {

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

        MyApplication.getInstance().addActivity(this);
    }
}

需要退出應(yīng)用程序時(shí)再調(diào)用MyApplication.getInstance().exit()方法:文章來源地址http://www.zghlxwxcb.cn/news/detail-536158.html

public class ExitActivity extends AppCompatActivity {

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

        Button btnExit = findViewById(R.id.btn_exit);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyApplication.getInstance().exit();
            }
        });
    }
}

到了這里,關(guān)于Android快速退出APP的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android常用的延遲執(zhí)行任務(wù)及輪詢定時(shí)任務(wù)的幾種方式

    Executor 的 execute 方法:向線程池中提交任務(wù)(異步執(zhí)行) Executor 接口是 Java 并發(fā)編程中的一個(gè)接口,它定義了一種執(zhí)行任務(wù)的通用機(jī)制。Executor 接口有一個(gè)重要的方法 execute,它的作用是提交一個(gè)任務(wù)(Runnable 或 Callable)給 Executor 進(jìn)行執(zhí)行。 execute 方法的作用如下: 提交任務(wù):

    2024年04月25日
    瀏覽(15)
  • Android App保活的方式

    在Android系統(tǒng)中,當(dāng)應(yīng)用程序進(jìn)入后臺(tái)或者被用戶關(guān)閉后,系統(tǒng)會(huì)自動(dòng)回收該應(yīng)用程序的資源,以達(dá)到優(yōu)化系統(tǒng)性能的目的。但是,有些應(yīng)用程序需要在后臺(tái)長(zhǎng)時(shí)間運(yùn)行,比如音樂播放器、即時(shí)通訊等,這時(shí)就需要使用一些技術(shù)手段來保持應(yīng)用程序的運(yùn)行狀態(tài),以確保應(yīng)用程序

    2024年02月16日
    瀏覽(21)
  • Android不同APP之間共享數(shù)據(jù)的方式

    今天給大家介紹三種不同APP之間共享數(shù)據(jù)的方式 第一種:使用SharePreference 使用SharePreference共享數(shù)據(jù) 第二種:使用ContentProvider, 這個(gè)就不仔細(xì)講了,大家看看其他文章吧 第三種:sharedUserId 通過SharedUser id,擁有同一個(gè)User id的多個(gè)APK可以配置成運(yùn)行在同一個(gè)進(jìn)程中.所以默認(rèn)就是

    2024年02月10日
    瀏覽(18)
  • ARabbit:一個(gè)快速開發(fā)Android App的框架

    ARabbit:一個(gè)快速開發(fā)Android App的框架

    5.主要版本修訂日志 6.引用的第三方庫 7.SDK引用的開源框架 8.使用ARabbit的項(xiàng)目 歡迎加入Android開發(fā)交流QQ群: 1.簡(jiǎn)介 ============================================================== 提供App開發(fā)的接口,使開發(fā)者只關(guān)心App的業(yè)務(wù)實(shí)現(xiàn),不用再關(guān)心具體功能實(shí)現(xiàn),比如網(wǎng)絡(luò)請(qǐng)求、圖片加載、對(duì)話

    2024年04月25日
    瀏覽(23)
  • APP開發(fā)——目前APP開發(fā)的幾種形式

    關(guān)于APP開發(fā)目前已經(jīng)過了火熱的階段,現(xiàn)在學(xué)習(xí)APP開發(fā)的人越來越多,但在實(shí)際的業(yè)務(wù)場(chǎng)景中,APP開發(fā)還是有一部分的市場(chǎng)需求。 所以,這里簡(jiǎn)單記錄一下APP開發(fā)的幾種思路和方案。 首先,目前APP開發(fā)主要有兩大平臺(tái),一個(gè)是安卓,一個(gè)是IOS,其他的比如微軟的移動(dòng)系統(tǒng)都

    2024年02月02日
    瀏覽(14)
  • 使用GoEasy快速實(shí)現(xiàn)Android原生app中的websocket消息推送

    摘要: GoEasy帶來了一項(xiàng)令開發(fā)者振奮的消息:全面支持Android原生平臺(tái)!現(xiàn)在,您可以在Android應(yīng)用中使用最酷炫的實(shí)時(shí)通信功能,借助GoEasy輕松實(shí)現(xiàn)消息的發(fā)送和接收。本文將帶您領(lǐng)略GoEasy最新版本的威力,為您的應(yīng)用增添一抹鮮活的互動(dòng)色彩。 嗨,開發(fā)者朋友們!是時(shí)候展

    2024年02月12日
    瀏覽(26)
  • Unity Android 之 讀取下載獲取移動(dòng)端 sdcard 路徑下的指定文件夾的所有圖片的幾種方式的簡(jiǎn)單整理

    Unity Android 之 讀取下載獲取移動(dòng)端 sdcard 路徑下的指定文件夾的所有圖片的幾種方式的簡(jiǎn)單整理

    目錄 Unity Android 之 讀取下載獲取移動(dòng)端 sdcard 路徑下的指定文件夾的所有圖片的幾種方式的簡(jiǎn)單整理 一、簡(jiǎn)單介紹 二、實(shí)現(xiàn)原理 三、注意事項(xiàng) 四、簡(jiǎn)單實(shí)現(xiàn)步驟 五、關(guān)鍵代碼 附錄: 一、不同平臺(tái)使用宏區(qū)分路徑加載 二、Unity3D中的資源路徑 三、Unity3D各平臺(tái)路徑(包括手

    2024年01月19日
    瀏覽(140)
  • 【App測(cè)試】adb三大連接方式-夜神模擬器+真機(jī)+android真機(jī)(詳細(xì)步驟)

    【App測(cè)試】adb三大連接方式-夜神模擬器+真機(jī)+android真機(jī)(詳細(xì)步驟)

    adb連接安卓模擬器 1、檢查夜神nox_adb.exe的版本與本地的adb版本是否一致 如果本地adb和夜神adb版本不一致,會(huì)相互查殺 1)檢查本地adb的版本 在cmd命令行中輸入: adb version ,為1.0.41版本 2)檢查夜神中nox_adb.exe版本 進(jìn)入到夜神的安裝包的bin目錄下,按住shif,點(diǎn)擊右鍵,打開

    2024年02月03日
    瀏覽(27)
  • 最快速刪除node_modules的幾種方式

    先全局安裝npm包 刪除 node_modules 文件夾命令

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包