-
StartService 1. 使用方法: (1)写一个MyStartService继承自Service,重写它的各种方法onCreate()、onStartCommand()、onDestory() (2)在AndroidManifest.xml中注册这个Service (3)在主线程Activity中通过startSerice(intent)方式启动 (4)通过stopService(intent)方式停止 2. 关于StartService (1)启动方式是通过启动intent方式实现 (2)启动之后该Service和启动源没有关系,即使主线程退出了,service还会继续运行查看全部
-
BroadcastReceiver发送方法查看全部
-
BRoadcastReceiver查看全部
-
Service的生命周期图查看全部
-
BroadcastReceiver——有序广播 1. 发送一个有序广播 Intent intent2 = new Intent(); intent2.putExtra("msg", "this is a ordered broadcast"); intent2.setAction("Broadcast_one"); //设置一个filter sendOrderedBroadcast(intent2, null); //发送一个有序广播 2. 有序广播可以被截断,也可以在中间被处理 利用Bundle类就可以处理广播 Bundle bundle = new Bundle(); bundle.putString("xzhang76", "Broadcast has been processed in Receiver1"); //xzhang76是对应的key,后面是value setResultExtras(bundle); 下一个接收者接收前面已经处理的广播: Bundle bundle = getResultExtras(true); String msg = bundle.getString("xzhang76"); //从对应的key中得到数据 BroadcastReceiver——异步广播 1. 就是说接收广播是异步的,可以先发送广播,再注册接收者。 sendStickyBroadcast(intent3); 动态注册一个接收者 IntentFilter intentFilter = new IntentFilter("Broadcast_Three"); //设置过滤 MyBroadcastReceiver3 receiver3 = new MyBroadcastReceiver3(); registerReceiver(receiver3, intentFilter); 这就意味着广播是粘性的。 注意:异步广播也是不能截断的。 4. 注意一点 动态注册的接收者需要在程序结束时销毁掉 unregisterReceiver(receiver3);查看全部
-
发送广播: Intent intent = new Intent() intent.putExtra("msg","这是普通广播") Intent.setAction("BC_One");//确保Intent的唯一性 sendBroadcast(intent) //发送广播 接收广播: 1.继承BroadcastReceiver,实现其方法onReceiver() String s=intent.getStringExtra("msg"); System.out.println("接收到消息"+s); abortBroadcast();//截断广播的方法,普通广播无法截断 清单文件(静态注册): <receiver android:name="包名加类名"> <intent-filter android:proprity="100"> //设置广播优先级,值为-1000~1000 <action android:name="包名.类名"/> </intent-filter> </receiver> 动态注册方法: IntentFilter intentfilter=new IntentFilter("Broadcast_one");//设置过滤 MyBroadcastReceiver2 receiver2 = new MyBroadcastReceiver2(); registerReceiver(receiver2, intentFilter); 注意: 1)动态注册的BroadcastReceiver优先级要比静态注册的高 2)动态注册有个弊端:如果当前java的程序结束了,动态注册的接收者将不再能收到广播。所以类似于短信拦截的BroadcastReceiver不能用动态注册。查看全部
-
前两种广播的介绍查看全部
-
SharedPreferences---键值对的形式存储数据查看全部
-
MODE_PRIVATE -为默认操作模式,代表该文件时私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文的内容 MODE_APPEND -模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件 MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE -用来控制其他应用是否由权限读写该文件 MODE_WORLD_READABLE -标识当前文件可以被其他应用读取 MODE_WORLD_WRITEABLE -标识当前文件可以被其他应用写入 File file=this.getFilesDir();----这个目录是当前应用程序默认的数据储存目录 File file1=this.getCacheDir();----这个目录是当前应用程序默认的缓存文件的存放位置,把一些不是非常重要的文件在此处创建,使用,如果手机的内存不足时,系统会自动去删除APP的cache目录数据 File file2=this.getDir("imooc",MODE_PRIVATE);----这个目录是当前应用程序默认目录下的自定义目录 /data/data/<包名>/app_imooc File file3=this.getExternalFilesDir(Type);----可以得到外部的存储位置 该位置的数据跟内置的使用时一样的,如果APP卸载了 这里面的数据也会自动清除掉 File file4=this.getExternalCacheDir();----如果开发者不遵守这样的规则,不把数据放入data/data/<包名>或者/mnt/sdcard/Android/data/<包名> 卸载之后数据将不会自动清除掉 将会造成所谓的数据垃圾查看全部
-
数据存储目录查看全部
-
一,新建一个项目 二,每个程序都有自己的数据库 默认情况下是各自互相不干扰 三,创建一个数据库 并且打开 1 使用openOrCreateDatabase建一个数据库(会创建一个文件夹) 2 三个参数name:名字, 后续用.db可以用第三方工具打开 3 mode :权限 4 factory:无介绍 四,用SQL创建一张表 db.execSQL("create table if not exists usertb (_id integer primary key autoincrement,name text not null,age integer not null, sex text not null)"); 创建数据: db.execSQL("insert into usertb(name,sex,age) values('张三','女','18')"); 五,使用db.rawQuery(sql,selectionArgs) sql:sql的语句 selectionArgs:查询条件 ,null查询全部数据 六,Cursor: 查询结果赋值给Cursor Cursor c = db.rawQuery("select * from usertb",null); 创建if语句 里面嵌套while循环 21:00 while循环外 用c.close();作为游标释放 if循环外 用db.close(); 作为数据库释放查看全部
-
一、各種申明: EditText etUserName,etUserPass; CheckBox chk; SharedPreferences pref; Editor edtior; etUserName = (EditText) findViewById(R.id.etuserName); etUserPass = (EditText) findViewById(R.id.etuserpass); chk = (CheckBox) findViewById(R.id.chkSaveName); 二:為登錄、取消按鈕添加屬性:(添加點擊事件的另一個方法) android:onClick="doClick" public void doClick(View v){ switch (v.getId()) { case R.id.btnLogin: String name = etUserName.getText().toString().trim();//去掉收尾的空格 String pass = etUserPass.getText().toString().trim(); if ("admin".equals(name)&&"123456".equals(pass)) { if (chk.isChecked()) { edtior.putString("userName", name); edtior.commit(); }else { edtior.remove("userName"); edtior.commit(); } Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show(); }else { Toast.makeText(MainActivity.this, "禁止登陆", Toast.LENGTH_LONG).show(); } break; default: break; } }查看全部
-
各种系统服务传入的name和返回对象。比如 网络连接 ConnectivityManager mManager=MainActivity.this.getSystemService(COMMECITVITY_SERVICE);<br> 然后再利用mManager的方法判断网络是否连接等.大多数的系统服务都需要加权限!查看全部
-
SharedPreferences查看全部
-
设置uri的返回值查看全部
举报
0/150
提交
取消