intent

网络监听以及判断网络是否可用

南笙酒味 提交于 2020-02-04 19:26:38
网络监听: AndroidManifest中定义网络监听的 receiver : <receiver android:name=".receiver.ConnectionChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver>    定义网路监听的广播接受类: public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (!Utils.isNetworkConnected()) { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(Constants.NOTIFICATION_SYNC); } } } 判断网络是否可用: public static

Intent 跳转

南楼画角 提交于 2020-02-04 11:14:38
android 中的隐式跳转和显示跳转 1.显式跳转:按钮点击事件----public void onClick(View v) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); //第一个参数是包名,第二个是你要打开的另外一个活动名 startActivity(intent); //startActivity()方法时专门用于启动活动的。 } 如果要回到上一个页面,很简单按一下back,即可返回上一个活动页面。 2.隐式跳转:* 一个Activity假设须要隐式跳转,那么在清单文件里必须加入下面子节点 <action android:name="com.itheima.sa"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> action节点的name是自定义的,定义好之后。这个name的值就会成为这个activity动作,在隐式启动Activity时,意图中设置的action必须跟"com.itheima.sa"是全然匹配的 ###应用场景 显示意图:启动同一个应用中的Activity 隐式意图:启动不同应用中的Activity 再启动效率上,隐式远远低于显式

android中跨进程通讯的4种方式

放肆的年华 提交于 2020-02-04 09:51:29
转自: http://www. android sdn.com/article/show/137 由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。   其中 Activity 可以跨进程调用其他应用程序的Activity;    Content Provider 可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;    Broadcast 可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播;    Service 和Content Provider类似,也可以访问其他应用程序中的数据,但不同的是,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。 完整示例请参阅本文提供的源代码。 方式一:访问其他应用程序的Activity Activity既可以在进程内(同一个应用程序)访问,也可以跨进程访问

【Android】IntentService & HandlerThread源码解析

大憨熊 提交于 2020-02-04 03:05:07
一、前言   在学习Service的时候,我们一定会知道IntentService:官方文档不止一次强调,Service本身是运行在主线程中的(详见: 【Android】Service ),而主线程中是不适合进行耗时任务的,因而官方文档叮嘱我们一定要在Service中另开线程进行耗时任务处理。IntentService正是为这个目的而诞生的一个优雅设计,让程序员不用再管理线程的开启和允许。   至于介绍HandlerThread,一方面是因为IntentService的实现中使用到了HandlerThread,另一方面是因为IntentService和HandlerThread以及很多Android中的类一样,其实都是为了方便某个目的,对最基本的类进行的一定的扩充,并且结构精巧,便于使用,很适合阅读研究。 二、HandlerThread源码 先来一段结结实实的完整源码: 1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You

Android IntentService的使用和源码分析

有些话、适合烂在心里 提交于 2020-02-04 03:00:18
引言 Service服务是Android四大组件之一,在Android中有着举足重轻的作用。Service服务是工作的UI线程中,当你的应用需要下载一个文件或者播放音乐等长期处于后台工作而有没有UI界面的时候,你肯定要用到Service+Thread来实现。因此你需要自己在Service服务里面实现一个Thread工作线程来下载文件或者播放音乐。然而你每次都需要自己去写一个Service+Thread来处理长期处于后台而没有UI界面的任务,这样显得很麻烦,没必要每次都去构建一个Service+Thread框架处理长期处于后台的任务。Google工程师给我们构建了一个方便开发者使用的这么一个框架---IntentService。 IntentService简介 IntentService是一个基础类,用于处理Intent类型的异步任务请求。当客户端调用android.content.Context#startService(Intent)发送请求时,Service服务被启动,且在其内部构建一个工作线程来处理Intent请求。当工作线程执行结束,Service服务会自动停止。IntentService是一个抽象类,用户必须实现一个子类去继承它,且必须实现IntentService里面的抽象方法onHandleIntent来处理异步任务请求。 IntentServic示例

Android模块开发-----用户信息模块(Fragment和Activity之间数据的传递)

天大地大妈咪最大 提交于 2020-02-03 00:04:52
在上一章节的 《Android模块开发------SQLite数据库的使用(登录模块)》 中,介绍了基本的登录模块,本节介绍一下用户模块的设计思路。 在登录成功,进入主界面后,通过ViewPager+Fragment的形式将Fragment添加到MainActivity,在用户UserFragment中,主要负责处理的就是显示当前用户的用户名,还有退出登录等简单的操作,后续有功能添加会在此更新。 (1)Activity和Activity之间数据的传递。 这种数据的传递方式,是开发过程中最常见的,通常会使用Intent、Bundle来进行数据的携带,然后跳转Activity。 Intent intent = new Intent ( ) ; //携带用户名信息到UserFragment显示 intent . putExtra ( "username" , username ) ; intent . setClass ( LoginActivity . this , MainActivity . class ) ; startActivity ( intent ) ; 使用Intent携带数据信息到MainActivity,在MainActivity中,通过下面的方式,可以得到传递的用户名信息。 String username = getIntent ( ) .

实验5

陌路散爱 提交于 2020-02-02 08:17:40
20182320 2019-2020-1 《数据结构与面向对象程序设计》实验5报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 郑力元 学号:20182320 实验教师:王志强 实验日期:2019年10月18日 必修/选修: 必修 1.实验内容 1.1 Android Stuidio的安装测试 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分 学习Android Stuidio调试应用程序 1.2 Activity测试 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章: 构建项目,运行教材相关代码 创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity 1.3 UI测试 参考

Android 防止多次点击事件

a 夏天 提交于 2020-02-02 01:00:17
恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面... 下面是简单的方案,大家可以试一试 原理很简单,当我们第一次点击的时候,把按钮变成不可点击状态。 然后设置 5s 的定时器来恢复点击事件。 方法一: public static void disabledView(final View v) { v.setClickable(false);    // 延迟5秒,恢复点击事件 new Handler().postDelayed(new Runnable() { @Override public void run() { v.setClickable(true); } }, 5000); } 方法二: public class BaseActivity extends Activity { protected boolean isDestroy; //防止重复点击设置的标志,涉及到点击打开其他Activity时,将该标志设置为false,在onResume事件中设置为true private boolean clickable=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

Android阶段性学习总结_2_Activity的生命周期、跳转方式及参数传递、启动模式。

馋奶兔 提交于 2020-02-01 22:35:49
Activity的生命周期: onCreat ,onStart,onResume,onPause,onRestart,onStop,onDestroy Activity之间的跳转分为显式跳转和隐式跳转。 隐式跳转: Intent intent=new Intent(); intent.setAction("android.intent.action.BAcivity"); startActivity(intent); 显式跳转: Intent intent=new Intent(AActivity.class,BActivity.class); //intent.setClass(class,class) //intent.setClassName(class,"class url"); 参数传递: Bundle bundle=new Bundle(); bundle.putString("string","---hahaha---"); intent.putExtras(bundle); startActivity(intent); 需回传参数的参数传递: AActivity: Intent intent=new Intent(Activity.this,BActivity.class); Bundle bundle=new Bundle(); bundle.put__(tag

Android 插件化原理及实践

不问归期 提交于 2020-02-01 08:46:14
概述 插件化是一个非常大的话题,他包含很多的知识点,我们今天简单的学习一下他的原理,并且从零开始实现插件化,这里主要用到了 Hook技术 关联文章 Android APK资源加载流程 Android 中的ClassLoader Android App启动过程 Android 热修复原理实战 设计模式 – 代理模式 插件化需要解决的问题和技术 Hook技术 插件的类加载 插件的资源加载 启动插件Activity Hook技术 如果我们自己创建代理对象,然后把原始对象替换为我们的代理对象(劫持原始对象),那么就可以在这个代理对象为所欲为了,修改参数,替换返回值,我们称之为 Hook 。 我们可用用 Hook 技术来劫持原始对象,被劫持的对象叫做 Hook 点,什么样的对象比较容易 Hook 呢?当然是 单例和静态对象 ,在一个进程内单例和静态对象不容易发生改变,用代理对象来替代 Hook 点,这样我们就可以在代理对象中实现自己想做的事情,我们这里 Hook 常用的 startActivity 方法来举例 对于 startActivity 过程有两种方式: Context.startActivity 和 Activity.startActivity 。这里暂不分析其中的区别,以 Activity.startActivity 为例说明整个过程的调用栈。 Activity 中的