Android读书笔记(一)

来源:互联网 发布:考研网络培训班 编辑:程序博客网 时间:2024/06/18 09:01

1.存储用户临时数据onSaveInstanceState()
当Activity由于内存不足而被回收时,临时数据丢失,为了避免这种情况要使用onSaveInstanceState()。
保存数据(用带一个参数的方法,此方法是AppCompatActivity的,个人认为兼容性比较好):

    protected void onSaveInstanceState(Bundle outState) {        super.onSaveInstanceState(outState);        String save ="要保存的数据";        outState.putString("data",save);    }

恢复数据:

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main8);        if(savedInstanceState != null){            String data = savedInstanceState.getString("data");        }    }

2.技巧:知晓当前在哪一个活动
当接手一份不是自己写的代码时,此技巧的作用十分的突出。
创建一个Activity,重写onCreate()方法,让其它的Activity来继承此Activity。

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main8);        Log.d("Activity", getClass().getSimpleName());    }

3.技巧:随时随地退出程序

public class ActivityCollector {    public static List<Activity> activities = new ArrayList<>();    /**     * 添加activity     * @param activity     */    public static void addActivity(Activity activity) {        activities.add(activity);    }    /**     *删除activity     */    public static void removeActivity(Activity activity) {        activities.remove(activity);    }    /**     * 删除list中所有的activity     */    public static void finishAll() {        for (Activity activity : activities) {            if(!activity.isFinishing()){                activity.finish();            }        }    }}

使用

public class MyActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        ActivityCollector.addActivity(this);    }    @Override    protected void onDestroy() {        super.onDestroy();        ActivityCollector.removeActivity(this);    }}

4.技巧:activity传值
当AActivity是你写的,而BActivity不是你写的。你需要从A向B传值,这时你不知道B需要什么值。为了解决这个问题,我们需要在B中创建一个静态的方法来接受需要的参数。

    /**     * @param context     * @param name 模拟需要的参数     * @param id    模拟需要的参数     */    public static void actionStart(Context context, String name, int id) {        Intent intent = new Intent(context,BActivity.class);        intent.putExtra("name", name);        intent.putExtra("id", id);        context.startActivity(intent);    }

在A中使用

        but_jump.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {              BActivity.actionStart(AActivity.this,"名字",1);            }        });

这样我们就能够很容易的知道B需要什么。