探究Android活动的小技巧
1.找出当前的活动
当我们在查看别人的代码的时候可能不能第一眼就发现首次的活动是哪一个,我们可以通过以下的方法来找出当前的主活动是哪一个:
新建一个BaseActivity类:
package com.example.activitytest;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class BaseActivity extends AppCompatActivity{
private static final String TAG = "BaseActivity";
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"当前的类:"+ getClass().getSimpleName());
}
}
然后让其他的类继承这个类这样当我们启动程序的时候就可以在log日志中找出当前执行的是哪一个活动.
2.随时随地退出程序
新建一个ActivityController类:
package com.example.activitytest;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
public class ActivityController {
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();
}
}
}
}
然后修改BaseActivity类,如下:
package com.example.activitytest;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class BaseActivity extends AppCompatActivity{
private static final String TAG = "BaseActivity";
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"当前的类:"+ getClass().getSimpleName());
ActivityController.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityController.removeActivity(this);
}
}
修改ThirdActivity如下:
package com.example.activitytest;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ThirdActivity extends BaseActivity {
private static final String TAG = "ThirdActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "Third中TaskID:"+getTaskId());
setContentView(R.layout.third_layout);
Intent intent = getIntent();
final String extra_data = intent.getStringExtra("extra_data");
//获取按钮
Button button3 = (Button) findViewById(R.id.button_3);
button3.setOnClickListener(new View.OnClickListener() {
//调用finishAll()
public void onClick(View v) {
ActivityController.finishAll();
// 杀掉当前进程的代码,保证程序完全退出
android.os.Process.killProcess(android.os.Process.myPid());
}
});
}
}
3.启动活动的最佳方法
SecondActivity添加如下代码:
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);
Log.d(TAG, "param1: "+data1);
Log.d(TAG, "param2: "+data2);
context.startActivity(intent);
}
FirstActivity修改点击事件如下代码:
//给secondActivity返回数据
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this,"数据1","数据2");
}