zoukankan      html  css  js  c++  java
  • 初学安卓开发随笔之 Menu、toast 用法、活动的四种启动模式 以及 一个方便的Base活动类使用方法

    Toast

    toast 是安卓系统的一种非常棒的提醒方式

    首先定义一个弹出Toast的触发点,比如可以是按钮之类

    其中 Toast.LENGTH_SHORT是指显示时长 还有一个内置变量为Toast.LENGTH_LONG可以选用。

     Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();

    Menu

    首先 在res目录下新建一个menu文件夹 创建一个main.xml 类似于下面的代码

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item
            android:id="@+id/add_item"
            android:title="设置"/>
        <item
            android:id="@+id/remove_item"
            android:title="帮助"/>
    </menu>

    其中 item是具体的菜单项 id为标识符 title为名称

    然后在活动中重写onCreateOptionsMenu()方法 (快捷键 Ctrl+O)

     @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        inflate 接受俩参数 第一个是资源文件 第二个是添加到哪一个menu对象中 。返回值决定是否能显示!!!
      定义菜单响应事件 重写onOptionsItemSelected()方法
    @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.add_item: Toast.makeText(this, "You Click 设置", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "You Click 帮助", Toast.LENGTH_SHORT).show(); break; default: } return true; }

    活动的四种启动模式

    standard、singleTop、singleTask和singleInstance 这四种

    修改方法是在AndroidManifest.xml中给对应活动标签指定android:launchMode即可

    standard   是默认的活动启动模式  (补充一点 Android 用返回栈管理活动) 即 不管是够以及在返回栈中存在的或者 启动都会创建该活动的一个实例

    singleTop  对应于standard模式 对如果在返回栈中存在的活动就不再创建新的活动实例,直接使用它。(使用它可以很好的解决重复创建栈顶活动的问题哦!!!

    singleTask  可以使得活动在整个应用程序的上下文中只存在一个实例。 在发现并直接使用已存在的实例活动时,会把这个活动之上的所有活动全部出栈!!!

    singleInstance  特殊 + 复杂

    这个模式下的活动 会启动一个新的返回栈来管理活动 这个模式是为了方便共享活动实例。 如下图解释 方便别的程序访问活动SecondActivity

    Base活动类使用方法

    通过增写一个活动的公共父类来简化代码

    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);
        //因为活动管理器中用一个LIst进行暂存活动的,所以就可以用addActivity()将当前正在创建的活动添加到活动管理器里
        //然后只需要在onDestroy方法里调用removeActivity()方法即可
    }
    protected void onDestory(){ super.onDestroy(); ActivityCollector.removeActivity(this);    //这样以后想在哪退出程序只需调用ActivityCollector.finishALl()即可 } }

     PS

      在销毁所有活动后可以再加上杀掉当前进程的代码

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

      killProcess()可以杀掉一个进程 接受一个进程id参数, 而且只能用于杀掉当前进程,无法杀掉其他进程。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
  • 原文地址:https://www.cnblogs.com/lzhh/p/Jack_li_1.html
Copyright © 2011-2022 走看看