如何永久杀死活动按钮后单击使用共享首选项

时间:2014-04-24 06:19:43

标签: android

public class MainActivity extends Activity {


    Button btn1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent newpage = new Intent(MainActivity.this, PhonrRegistaion.class);
        startActivity(newpage);

        btn1=(Button)findViewById(R.id.button1);
        btn1.setOnClickListener(new OnClickListener() {

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

                Intent myintent=new Intent(MainActivity.this,nextActvity.class);

                startActivities(null);

            }
        });

    }
}

这是我的活动我希望从一个Activity移动到另一个Activity我希望永久使用共享prefrances杀死我的Activity意味着如果打开Application那么它应该启动第二个Activity。请帮助我不知道如何使用shred prefrances杀死Activity

4 个答案:

答案 0 :(得分:0)

您不能“杀死”某项活动,但可以finish()

答案 1 :(得分:0)

onCreate()创建条件:

if (<your condition>) {
  startActivity(...);
  finish();
}

答案 2 :(得分:0)

在新活动开始时完成旧活动:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         SharedPreferences prefs = getSharedPreferences(LOC_PREF_FILE, MODE_PRIVATE);
     Boolean startSecond = prefs.getBoolean("StartSecondActivty", false);

         if (startSecond) {
             Intent newpage = new Intent(this, PhonrRegistaion.class);
             startActivity(newpage);
             finish();
        }

        btn1=(Button)findViewById(R.id.button1);
        btn1.setOnClickListener(new OnClickListener() {

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

                    Intent myintent=new Intent(this, nextActvity.class);

                    startActivities(null);
                    finish();

                    SharedPreferences prefs = getSharedPreferences(
                LOC_PREF_FILE, MODE_PRIVATE);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean("StartSecondActivty", true);
                editor.commit();
                editor.apply();

                }
           });

    }
}

这不是永久性的,因为它会在GC之前驻留在内存中。

如果你想永久地杀死你的活动(和app),请尝试杀死你自己的进程:

    // Kill everything you can
    public void killMyProcess() {
        try {
            Process process = Runtime.getRuntime().exec(
                    "/system/bin/kill -9 -1");
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            int read;
            char[] buffer = new char[4096];
            StringBuffer output = new StringBuffer();
            while ((read = reader.read(buffer)) > 0) {
                output.append(buffer, 0, read);
            }
            reader.close();
            process.waitFor();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

答案 3 :(得分:0)

这是完整的解决方案

//firstly when you register the user set the shared preferences in your register class like this
    //declare pref editor 
            SharedPreferences prefs; 
        SharedPreferences.Editor prefsEditor;
            prefs = PreferenceManager.getDefaultSharedPreferences(this);
        prefsEditor = prefs.edit();

    //paste below peace of code when the registration will be success

                     prefsEditor.putString("register", "yes");
                 prefsEditor.commit(); 

//now in your first activity you just check the shared pref value to know the user is register or no 


 SharedPreferences prefs;
String register;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
        register=prefs.getString("register", "");
//now check the value of shared pref and apply the condition like this
Intent intent ;
    if(register.equalsIgnoreCase("yes"))
            {
                intent = new Intent(this, NextAct.class);
                startActivity(intent);
                finish();

            }
            else
            {
             intent = new Intent(this, Register.class);
                startActivity(intent);
                finish();
            }