Android读书笔记(一)

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需要什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值