安卓基本知识

页面跳转

Intent intent = new Intent(当前页面对象,目标页面对象);
startActivity(intent);
  • MainActivity => Main2Activity ,并传递参数id

    String id = "101";
    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
    intent.putExtra("id",id);
    startActivity(intent);
    
  • 在Main2Activity页面接收参数id

    Intent intent1 = this.getIntent();
    String id = intent1.getStringExtra("id");
    

安卓四大组件

  • Activity

    Activity为可视化用户界面,使用户和安卓程序可以交互
    • 一个Activity通常就是一个单独的屏幕(窗口)。
    • Activity之间通过Intent进行通信。
    • android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity
  • Service

    Service是android系统中的一种组件,跟activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。

    Service可以理解为没有界面的Activity

    • 后台播放音乐
    • 后台下载文件
  • Broadcast Receiver(广播)

    广播接收者,不执行任何任务,广播是一种广泛运用的在应用程序之间传输信息的机制 。 而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件。Broadcast Receiver 不包含任何用户界面。然而它们可以启动一个Activity以响应接受到的信息,或者通过NotificationManager通知 用户。
    • 当手机接收短信时,安卓系统会发送广播,安卓程序通过接收广播可以获取短信的信息
  • Content Provider(内容提供者)

    在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。Android当然不会真的把每一个应用都做成一座“孤岛”,它为所有应用都准备可一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生Content Provider类,封装成一枚Content Provider。每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有应用看着像REST的样子,但实际上它比REST更为灵活。和REST类似,uri也可以有两种类型,一种是带id的;另一种是列表的,但实现者不需要按照这个模式来做,给id的uri也可以返回列表类型的数据

安卓项目文件目录结构

  • src:存放java源代码
  • gen: 保存自动生成的位于Android项目包下的R.java文件。在项目中添加的任何资源都会生成一个相应的资源id,这个文件不要手动修改。
  • bin:存放自动生成的二进制文件、资源打包文件以及项目执行后生成的apk包(.apk文件)** **
  • res:在项目中用到的所有图片、布局、字符串资源都要存放在这个目录下,gen目录下的R.java文件中的内容也是根据这个目录下的文件自动生成的。布局xml文件命名注意事项——不能包含任何大写字母
  • drawable:存放图片(命名规范:不能有中文,必须以小写字母开头)
  • layout:存放activity 页面UI布局
  • AndroidManifest:整个安卓项目的配置文件程序中定义的所有四大组件都需要在这个文件里注册。

安卓生命周期

  • onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问,初始化信息。
  • onStart(): Activity变为在屏幕上对用户可见时调用。
  • onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。
  • onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。Activity从可见状态变为半透明遮盖状态
  • onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用,界面被全部遮盖。
  • onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而不是启动新的Activity。
  • onDestroy:应用退出时被调用的最后一个方法,销毁,释放资源。

Activity注册

在AndroidManifest.xml文件中注册Activity,未注册的Activity将不能正常使用
<manifest
	<application
        <activity android:name=".MainActivity" >
         		<!--设置主启动页-->
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        <!--普通activity声明-->   
        <activity android:name=".Main2Activity"></activity>
     </application>
</manifest>

安卓服务基本使用

  • 创建服务类基础Service类

    class MyService : Service() {
    
        private val TAG = "MyService"
    
        override fun onBind(intent: Intent): IBinder {
            Log.v(TAG,"初始化服务1")
            return null!!
        }
    
        override fun onCreate() {
            super.onCreate()
            Log.v(TAG,"创建服务")
        }
    
        override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
            Log.v(TAG,"开始服务")
            return super.onStartCommand(intent, flags, startId)
        }
    
        override fun onDestroy() {
            super.onDestroy()
            Log.v(TAG,"销毁服务")
        }
    }
    
  • 开启服务

    startService(new Intent(MainActivity.this, MyService.class));
    
  • 关闭服务

    stopService(new Intent(MainActivity.this, MyService.class));
    

安卓广播基本使用

  • 静态注册

    <receiver android:name=".MyBroadcastReceiver" >
      <intent-filter >
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
      </intent-filter>
    </receiver >
    

    广播接收实现代码

    public class MyBroadcastReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // 广播处理部分
        }
    }
    

    发送自定义广播

    Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
    sendBroadcast(intent);
    
  • 动态注册广播

    //动态接受网络变化的广播接收器
    intentFilter = new IntentFilter();
    intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    myBroadcastReceiver = new MyBroadcastReceiver();
    registerReceiver(myBroadcastReceiver, intentFilter);
    

安卓数据库帮助类

class SqlHelper(context: Context?, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int) : SQLiteOpenHelper(context, name, factory, version) {
   
    override fun onCreate(db: SQLiteDatabase?) {
    	// 数据库初始化部分,完成数据库的创建
        val sql = "create table if not exists userInfo (id integer primary key autoincrement ,pwd varchar(20),sex varchar(2));"
        db?.execSQL(sql)
        //db?.close()
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
	// 数据库升级部分,对数据库版本升级
    }

    val TAG = "SqlHelper"
}

Android SharedPreference 数据存储

  • 存储

    //获取SharedPreferences
    SharedPreferences sharedPref = getSharedPreferences("LightTest", MODE_PRIVATE);
    //打开SharedPreferences的编辑状态
    SharedPreferences.Editor editor = sharedPref.edit();
    //存储数据,用户名,键值对的形式
    editor.putString(Name, dataStr);
    //提交,保存数据
    editor.commit();
    
  • 读取

    //获取SharedPreferences
    SharedPreferences sharedPref = getSharedPreferences("LightTest", Context.MODE_PRIVATE);
    //获取LightTest文件中Name对应的数据;
    // 注意第二个参数,若此键值对中暂时没有数值,则默认返回第二个参数的值
    String name = sharedPref.getString(Name, null);
    

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值