自学Android第五天——活动的一些小技巧

2019-04-14  本文已影响0人  GoldenR

知晓当前是在哪一个活动

找到 项目名称——>app——>src——>main——>java——>包,右键new——>java class。我们命名为BaseActivity。内容如下:

public class BaseActivityextends AppCompatActivity {

@Override

    protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

        Log.d("BaseActivity",getClass().getSimpleName());

    }

@Override

    protected void onDestroy(){

super.onDestroy();

        ActivityCollector.removeActivity(this);

    }

}

随时随地退出程序

创建和上面一样的方法。名字命名为ActivityCollector,内容如下:

public class ActivityCollector {

public static Listactivities=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();

    }

}

把下面的代码添加到你要实现退出程序功能的活动中,例如我们在第三个活动添加该功能,代码如下:

public class ThirdActivityextends AppCompatActivity {

@Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_third);

        Button but_3=(Button)findViewById(R.id.but_3);

        //退出程序

        but_3.setOnClickListener(new View.OnClickListener() {

@Override

            public void onClick(View v) {

                ActivityCollector.finishAll();

                //杀死当前进程

                //android.os.Process.killProcess(android.os.Process.myPid());

            }

        });

    }

你可以选择在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码在代码前加了注释的。

启动活动的最佳写法

前面见过用Intent进行跳转,这样没问题。但是在真正的项目开发中经常会有对接的问题出现。这时我们换一种写法,就可以解决这种窘境。

例如我们修改SecondActivity中的代码,如下所示:

public class SecondActivityextends BaseActivity {

    //启动活动(最佳方法)

    public static void actionStart(Context context,String data1,String data2){

        Intent intent=new Intent(context,SecondActivity.class);

        intent.putExtra("param1",data1);

        intent.putExtra("param2",data2);

        context.startActivity(intent);

    }

//其他的方法用点表示

。。。

}

现在我们只需要在FirstActivity中的onClick() 方法里添加SecondActivity.actionStart(FirstActivity.this,"data1","data1");这样一目了然,你可以清晰地知道启动SecondActivity需要传递哪些数据。

上一篇下一篇

猜你喜欢

热点阅读