• 活动启动模式


    启动模式

    1.standard

    同一个页面可以打开多次

    2.singleTop

    打开页面直接处于栈顶

    3.singleTask

    会保证页面只打开一次

    4.singleInstance

    开启新的栈

    获取当前活动技巧,

    创建一个基础的类,

    package activitytest.example.com.activitytest;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    
    /**
     * Created by DianDoDo on 2017/9/4.
     */
    
    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());
        }
    }
    
    

    其他的活动类,继承它,就可以在每次打开活动的时候,都能显示活动名称了

    package activitytest.example.com.activitytest;
    
    import android.net.Uri;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Toast;
    import android.widget.Button; // 引入才可以操作Button
    import android.content.Intent;
    
    public class FirstActivity extends BaseActivity {
        private static final String TAG = "FirstActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Log.d(TAG,"Task id is" +getTaskId());
    
            setContentView(R.layout.first_layout); // 设置默认布局
    
            Button button1 = (Button) findViewById(R.id.button_1);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                    startActivity(intent);
                }
    
            });
    
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case 1:
                    if (resultCode == RESULT_OK) {
                        String returnedData = data.getStringExtra("data_return");
                        Log.d("FirstActivity",returnedData);
                    }
                    break;
                default:
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main,menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.add_item:
                    Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.remove_item:
                    Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
            return true;
        }
    
        @Override
        protected void onRestart() {
            super.onRestart();
            Log.d(TAG,"onRestart");
        }
    }
    
    

    处理全部关闭

    1.创建一个ActivityCollector类

    package activitytest.example.com.activitytest;
    
    import android.app.Activity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by DianDoDo on 2017/9/4.
     */
    
    public class ActivityCollector {
        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();
                }
            }
        }
    }
    
    

    2.在Base类中管理

    package activitytest.example.com.activitytest;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    
    /**
     * Created by DianDoDo on 2017/9/4.
     */
    
    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());
            ActivityCollector.addActivity(this);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            ActivityCollector.removeActivity(this);
        }
    }
    
    

    3.活动中调用finishAll

    package activitytest.example.com.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;
    
    public class ThirdActivity extends BaseActivity {
        private static final String TAG = "ThirdActivity";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.d(TAG,"Task id is" +getTaskId());
            setContentView(R.layout.third_layout);
    
            Button button3 = (Button) findViewById(R.id.button_3);
            button3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ActivityCollector.finishAll();
                }
    
            });
    
        }
    }
    
    

    优化传参处理

    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);
            context.startActivity(intent);
        }
    

    活动一中调用,

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Log.d(TAG,"Task id is" +getTaskId());
    
            setContentView(R.layout.first_layout); // 设置默认布局
    
            Button button1 = (Button) findViewById(R.id.button_1);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    //                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    //                startActivity(intent);
                    SecondActivity.actionStart(FirstActivity.this,"data1","data2");
                }
    
            });
    
        }
    

    这样就可以方便的传参数了。

  • 相关阅读:
    jquery封装的时间轴
    openlayers实现多图显示
    wms常用操作
    教你如何拔取百度地图POI兴趣点
    北京市地铁线路及站点数据
    Arcgis for js实现北京地铁的展示
    Openlayers 2.X加载高德地图
    Arcgis for js加载百度地图
    常用公共服务接口与java调用实现
    Openlayers 2.X加载天地图
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/7474407.html
Copyright © 2020-2023  润新知