Автоматическое закрытие приложения для Android с помощью Intent?

Я сделал простое приложение для начинающих с помощью Drawables и Intent. Идея состоит в том, чтобы выполнить четыре действия и с помощью потока перейти от одного к другому действию, и когда он дойдет до последнего действия, я хочу автоматически закрыть приложение, выведя тост как «BYE» или что-то еще. Если это возможно с помощью Intent или любым другим способом, помогите мне.

Код моего последнего действия приведен ниже, но он зацикливается на последнем действии до бесконечности:

package mj.manan.thisisit;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class ScreenLast extends Activity {

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

        Thread t1 = new Thread(){
            public void run(){

                try {
                    Thread.sleep(2000);
                    finish();
                } catch (InterruptedException e) {
                    // Auto-generated catch block
                    e.printStackTrace();
                }finally{
                     Intent innt = new Intent(ScreenLast.this,ScreenLast.class);
                     innt.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     startActivity(innt);
                     ScreenLast.this.finish();

                }
            }
        };
        t1.start();

 }

}

person Manan Gupta    schedule 09.10.2013    source источник


Ответы (5)


Чтобы Выйти из приложения до intent, используйте этот код:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

Попытайся.

person Amresh    schedule 09.10.2013
comment
который не выходит из приложения. - person Jonathan; 13.02.2017
comment
stackoverflow.com/questions/ 21130493/ - person Amresh; 14.02.2017
comment
не выходит из приложения. вы читали что выложили? все еще в фоновом режиме - person Jonathan; 14.02.2017

Могут быть разные подходы. Я думаю, что вы можете использовать широковещательный отправитель и получатель также для вашего случая. Подобный ответ, который я опубликовал однажды, может помочь вам.

Завершение действия из другого действия

person Bharat Sharma    schedule 09.10.2013

Если я правильно понял, вы хотите завершить свою деятельность, когда стек активности не пуст, или, если быть более точным, в стеке более одного действия.

Я покажу вам, как я это сделал, и вы можете настроить его, как вам нравится

когда вы достигнете точки, которую хотите закрыть, сделайте следующее:

                   Intent intent = new Intent(Main.this, Main.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        intent.putExtra("EXIT", true);
                        startActivity(intent);

затем в onCreate вы добавляете:

if (getIntent().getBooleanExtra("EXIT", false)) {
            finish();
        }

вы можете добавить тост ко второй части или добавить таймер или что угодно. дело в том, что сначала мы очищаем весь стек Activity, оставляя только наш текущий... затем мы заканчиваем его.

person Jony-Y    schedule 09.10.2013
comment
Он сделал цикл и не выходит из приложения. - person Manan Gupta; 10.10.2013
comment
объясните мне, как он может создать цикл, если вы очистите весь стек?... так что прочитайте код... поймите его и используйте... я использую его все время... ЭТО РАБОТАЕТ В МОИХ ПРИЛОЖЕНИЯХ... . - person Jony-Y; 10.10.2013

Вы можете использовать этот пример кода для выхода из приложения

                        Intent intent1 = new Intent(Intent.ACTION_MAIN);
                        intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        intent1.addCategory(Intent.CATEGORY_HOME);
                        startActivity(intent1);
person Kalai.G    schedule 09.10.2013

вы вызываете ту же активность: - Intent innt = new Intent(ScreenLast.this,ScreenLast.class);

либо вызовите другую активность вместо этого.

Or

Вы также можете использовать обработчик для этого:

@Override
    protected void onCreate(Bundle savedInstanceState) 
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screenlast);
        Toast.makeText(ScreenLast.this, "Bye", Toast.LENGTH_SHORT).show();
        move_next();
        }

public void move_next()
{
final Handler handle = new Handler();
        Runnable delay = new Runnable() {
            public void run() 
            {               
                finish();
            }
        };
        handle.postDelayed(delay,2000);
}
person UchihaSasuke    schedule 09.10.2013
comment
Я просто хочу выйти из приложения, а не повторять его - person Manan Gupta; 09.10.2013
comment
если вы хотите запустить это действие один раз, вам нужно вызвать finish(); и окончательно удалите все содержимое формы. - person UchihaSasuke; 09.10.2013
comment
Попробуйте код с обработчиком. И в ваших других 3 действиях, когда вы вызываете следующее действие, т.е. Intent i = new Intent(this, next.class); начать активность (я); просто добавьте финиш(); после этого кода. - person UchihaSasuke; 11.10.2013