为了账号安全,请及时绑定邮箱和手机立即绑定

Android攻城狮的第二门课(第3季)

难度初级
时长 6小时 0分
学习人数
综合评分9.57
162人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.3 逻辑清晰
  • 如图,是获取 WIFI 状态,然后做开启或关闭 WIFI 的操作。 同样要先获取权限: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 读取WiFi状态 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 改变WiFi状态
    查看全部
  • 安卓系统默认对于一些比较危险的操作或者高权限的操作都要求必须具有权限才能执行,例如发送短信、读取通讯录、打开/关闭WiFi等等。 例如这节课的示例是要查看网络状态,就需要添加相应权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses> 添加这个权限后,用户在安装这个应用的时候,安装界面就会提示该应用需要获取网络状态。 判断网络是否连接: 编写一个判断网络连接的类 isNetworkConnected(Context context),之所以要使用上下文作为参数,是因为使用系统服务要用到 context: public boolean isNetworkConnected(Context context) { // 判断网络的方法 if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager .getActiveNetworkInfo();// 获取网络连接状态信息 if (mNetworkInfo != null) {// 如果不为空 return mNetworkInfo.isAvailable();// 返回网络状态属于活动状态 } } return false; }
    查看全部
  • SQLite的特点
    查看全部
  • 常用系统服务3
    查看全部
    0 采集 收起 来源:系统服务概述

    2017-06-08

  • 常用系统服务2
    查看全部
    0 采集 收起 来源:系统服务概述

    2017-06-08

  • 常用的系统服务
    查看全部
    0 采集 收起 来源:系统服务概述

    2017-06-08

  • 点击事件 case R.id.bind://绑定服务 intent2=new Intent(MainActivity.this,MyBindService.class); startService(intent2);//StartService 和 BindService相结合实现服务(要在onDestroy销毁),去掉就是单独的BinderService。 bindService(intent2, connection, BIND_AUTO_CREATE);//第二个参数是连接对象,第三个参数是必须要填的一个常量,没写的话将无法自动创建Service。 break; case R.id.Unbind:// 解绑服务 unbindService(connection); break; 单纯使用 BindService还是有很多隐患的。实际上可以结合 StartService 和 BindService。如图,使用同一个通信 intent2 ,就可以实现。 但比较麻烦的是,你打开了服务,就要相应地去关闭服务,所以要在 MainActivity 中重写 onDestroy()方法: @Override protected void onDestroy() { // TODO Auto-generated method stub stopService(intent2); unbindService(connection);//解绑 super.onDestroy(); } 这样在 Activity 被销毁的时候,就会停止服务,并解除了绑定。这样一来,即使程序被强制退出,也不会报错(之前会报一些和Service相关的错)。 注意:解绑只能使用一次,多次使用会报错,另外当启动源在没有解绑的情况下退出程序也会报错。 摘自评论区: bindService();方法中的第二个参数必须实现,ServiceConnection conn = new ServiceConnection(){};里边有两个方法可以暂时不管。如果写成null是会报错的。
    查看全部
    1 采集 收起 来源:Bind启动

    2017-06-08

  • 在MyBindService类中: //IBinder接口不能直接用,重写一个类来继承Binder类把他作为IBinder参数返回即可 public class MyBinder extends Binder { public MyBindService getService(){//获取服务,并返回给服务本身 return MyBindService.this; } } //通过IBinder接口实例,返回一个ServiceConnection对象给启动预案 @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub Log.i("info", "Service--onBind()"); return new MyBinder();//新建的MyBinder作为IBinder的返回值 } 在MainActivity类: MyBindService service; //通过ServiceConnection对象的相关方法可以得到Service对象,用来实现service端到客服端的绑定 ServiceConnection connection=new ServiceConnection() { //当启动源跟Service的连接意外丢失的时候回调用这个方法,比如当Service崩溃或者被强行杀死了 @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub } //当启动源跟Service成功连接之后将会自动调用这个方法 @Override public void onServiceConnected(ComponentName name, IBinder binder) { // TODO Auto-generated method stub service=((MyBinder)binder).getService();//大类转化为自身的小类,获取内部类中的方法,从而获得服务本身 } };
    查看全部
    0 采集 收起 来源:Bind启动

    2018-03-22

  • service启动式服务: 1、创建一个类继承Service(后面该类将作为Intent通信的对象之一),实现几个方法: public void onCreate() { // 由于只执行一次,一般把初始化操作放在这里 super.onCreate();//当服务被创建时,会执行该方法。 } public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId);//当有开启服务的命令时,会调用该方法。 } public void onDestroy() { super.onDestroy(); } // IBinder是一个抽象的方法,这里用不到 public IBinder onBind(Intent intent) { return null; } 3. 在配置文件中注册服务 <service android:name=".MyStartService"/> 4. 如图,编写点击事件: public void doClick(View view){ switch (view.getId()){ case R.id.btn_start: // 开始服务 intent1 = new Intent(this,MyStartService.class); // Intent 实现组件之间的通信,这里是Activity和Service之间。 startService(intent1); // 和以前的 stratActivity() 很类似。 break; case R.id.btn_stop: // 停止服务 stopService(intent1); break; } } 注意事项: 1.一个服务只能启动一次。如果再次启动,会调用onStartCommand方法 2.服务不能进行耗时操作,但是服务可以开辟线程来完成耗时操作 3.停止服务会调用onDestroy方法。但是如果再次停止服务,将什么都不会发生
    查看全部
    0 采集 收起 来源:Start启动

    2018-03-22

  • 1. 本地服务(Local Service) - 应用程序内部 - startService(启动服务)、stopService(在“启动源”或者 Activity 中停止服务)、stopSelf(在Service停止服务)、stopSelfResult(在Service中停止服务),后面两种都是服务的自我停止。 - bindService(绑定服务)、unbindService(解绑) 通过 startService 或者 bindService 都可以启动服务。 2. 远程服务(Remote Service) - Android系统内部的应用程序之间(不是手机之间) - 定义 IBinder 接口,通过它,把数据暴露出来,然后把数据提供给启动源或者其他程序。 远程服务只能通过 IBinder 去启动服务。 -------------- 我们知道一个Activity是有生命周期的,并且必须在配置文档中进行注册。而Service和Activity是类似的,有类似的生命周期,也必须注册。 继承关系: Service 继承 ContextWrapper,Activity 继承 ContextThemeWrapper,二者共同拥有一个“祖宗类”——Context。 ------------------ 如图所示是 Service 的两种生命周期(分别以startService和bindService启动)。 Start方式特点: - 服务跟启动源没有任何联系 - 无法得到服务对象 Bind方式特点: - 通过 Ibinder 接口实例,返回一个ServiceConnection对象给启动源 - 通过 ServiceConnection对象的相关方法可以得到Service对象
    查看全部
    0 采集 收起 来源:Servie概述

    2017-06-08

  • 组件篇——Service 当Android系统内存不足的时候,会杀死优先级别较低的Activity,而基本上Service的优先级要高于Activity,所以程序中如果含有 Service,那么该程序是很难被杀掉的,而且即使 Service 被杀掉,它也很容易自己再次启动,除非人为去停掉。 ------------------- Service 本身不能做耗时操作(因为它运行在主线程)。耗时操作交给 Handle 或者 AsyncTask 去处理。
    查看全部
    0 采集 收起 来源:Servie概述

    2017-06-08

  • 怎么用好BroadcastRecevier
    查看全部
  • 异步广播之所以又叫“粘滞性广播”,是因为它的广播会一直存在,不像其他广播一用完就会被销毁。所以这里的示例将采取“先发送广播,后注册接收者”,如果接收者还能接收到广播,就能说明异步广播的“粘滞性”。 注意:“粘滞性”是需要在配置文件中添加权限的: <uses-permission android:name="android.permission.BROADCAST_STICKY"></uses> 并且当我们用动态注册时,我们应该在activity的ondestroy方法中销毁,所以动态注册的这些接收者本身,最好定义为全局变量,然后在方法中初始化。
    查看全部
  • 有序广播的代码和普通广播差不多,不过sendOrderedBroadcast(intent2, null);后面null代表的是权限 在BC1和BC2中写一个间的数据传输: BC1: Bundle bundle = new Bundle(); bundle.putString("test", "广播处理的数据"); setResultExtras(bundle); BC2: Bundle bundle=getResultExtras(true);//接收数据 String s2=bundle.getString("test"); Log.i("info", "得到的处理结果是:"+s2);
    查看全部
  • //动态注册优先于静态注册,但有局限性,必须要改程序启动才有用 IntentFilter intentFilter=new IntentFilter("BC_ONE");//动态注册所需的过滤器 BC2 bc2=new BC2();//动态注册的对象 registerReceiver(bc2, intentFilter);//接收器的动态注册
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Android开发课程的中后期部分,学习之前要求对一些知识点有一定的了解: 1、已经掌握了Java基础 2、已经熟悉或者了解Android中的监听事件原理 3、已经熟悉或者了解一种以上的数据库,并掌握基本的SQL语句
老师告诉你能学到什么?
1、初步掌握Android手势识别的原理以及实际使用 2、初步掌握Android的数据存储方式 3、深度了解Android中的组件 4、熟悉了解Android常用的系统服务并对服务的使用有新的认识

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!