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参数, 而且只能用于杀掉当前进程,无法杀掉其他进程。

  • 相关阅读:
    C语言不进行类型检查 和函数能够不进行前向声明
    EventBus 《二》 Android EventBus的简单使用
    android开发之SnackBar的使用
    iOS语音播放之切换听筒和扬声器
    使用NSURLConnection的网络请求与封装
    Mina Basics 02-基础
    Mina Basics 02-基础
    jquery移除事件,绑定事件,触发事件
    jquery移除事件,绑定事件,触发事件
    jquery移除事件,绑定事件,触发事件
  • 原文地址:https://www.cnblogs.com/lzhh/p/Jack_li_1.html
Copyright © 2011-2022 走看看