intent

上传图像之裁剪

二次信任 提交于 2020-04-06 11:57:25
  一个但凡涉及到用户信息的应用,总少不了设置用户图像这个小功能。之前做这块的时候只是简单的复制粘贴导致最近再做这个功能的时候,却发现问题很多,拍照及相册选择后启动系统裁剪要不崩溃要不就是没有返回数据,今天好好梳理一下这个功能。   调用系统拍照界面: private void startTakePhotoActivity() { temp_file_name = String.valueOf(System.currentTimeMillis()) + FILE_SUFFIX; temp_photo_uri = Uri.fromFile(new File(DIRECTORY, temp_file_name)); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 默认情况下不需要指定拍照生成图片的uri 系统默认返回照片缩略图uri // 如果用户指定了生成图片的uri 系统就不会返回 intent.putExtra(MediaStore.EXTRA_OUTPUT, temp_photo_uri); startActivityForResult(intent, FLAG_CAMERA); }   调用系统相册界面: private void startPickPhotoActivity() { //

android 头像选择以及裁剪

纵饮孤独 提交于 2020-04-06 06:08:41
一、布局申明 <ImageView android:id="@+id/head_image" android:layout_width="80dp" android:layout_height="80dp" android:layout_centerHorizontal="true" android:background="@drawable/default_avatar" /> 二、Activity中代码 private ImageView headImageView; private BitmapUtil bitmapUtil = new BitmapUtil(this);private File headFile; headImageView = (ImageView) findViewById(R.id.head_image); headImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new android.app.AlertDialog.Builder(RegisterActivity.this) .setTitle("头像选择") .setNegativeButton("相册选取", new DialogInterface

从0系统学Android-2.4隐式Intent

巧了我就是萌 提交于 2020-04-06 04:10:16
本系列文章,参考《第一行代码》,作为个人笔记 更多内容: 更多精品文章分类 使用隐式 Intent 相对于显示 Intent ,隐式 Intent 比较含蓄。这种方式不明确指出我们想要启动哪一个 Activity。而是定义了一系列更为抽象的 action 和 category 等信息。然后交给系统去分析这个 Intent ,并帮我们找出这个合适Activity。 合适的 Activity 就是指的可以响应这个隐式 Intent 的 Activity。 通过在 <activity> 标签下配置 <intent-filter> 的内容,可以指定当前 Activity 能够响应的 action 和 category。在 AndroidManifest.xml 中添加: bt.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ Toast.makeText(MainActivity.this,"显示内容",Toast.LENGTH_SHORT).show(); Intent intent = new Intent("com.syd.start"); startActivity(intent); } }); 每个 Intent 中只能指定一个 action

Android Service学习

前提是你 提交于 2020-04-05 22:20:30
还有一个IntentService! AndroidManifest.xml 注册service <service android:name=".LocalService" android:enabled="true" > <intent-filter> <action android:name="com.test.service" /> </intent-filter> </service> Activity中启动服务(注:LocalService.java继承于Service) 方法1 //启动服务 Intent intent=new Intent(this,LocalService.class); startService(intent); 方法2 LocalService localService=null; //用bindService方法启动服务 private void BinderService(){ Intent intent=new Intent(this,LocalService.class); bindService(intent, new ServiceConnection(){ @Override public void onServiceConnected(ComponentName componentName, IBinder binder) { /

Andriod学习 第十二周

 ̄綄美尐妖づ 提交于 2020-04-05 20:53:45
一、Service 首先我们来了解一下线程的相关概念: 线程 1 相关概念 程序:为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码) 进程:运行中的程序,系统调度与资源分配的一个独立单位,操作系统会 为每个进程分配一段内存空间。程序的依次动态执行,经历代码的加载,执行, 执行完毕的完整过程。 线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个 进程中才能执行,线程由程序负责管理,而进程则由系统进行调度。 多线程的理解:并行执行多个条指令,将CPU时间片按照调度算法分配给各个 线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉到"同时"而已。 2 线程的生命周期 3 创建线程的三种方式 继承Thread类 实现Runnable接口 实现Callable接口 如果使用的是2创建的线程的话,可以直接这样启动: new Thread(myThread).start(); 当更多的时候我们喜欢使用匿名类,即下面这种写法: new Thread(new Runnable(){ public void run(); }).start(); Service与Thread 两者并没有太大的关系,但容易混淆。 Thread是线程,程序执行的最小单元,分配CPU的基本单位, 而Service则是Android提供一个允许长时间留驻后台的一个组件,最常见的

不同进程访问”相同“资源

孤街醉人 提交于 2020-04-03 22:07:38
今天碰到一个服务在配置文件里 android:process=":updataService" 是个独立的线程 在Application里我有个SharedPreferences统一管理单例工具, 当我在Service里访问并设置了一个SP(发现会new这个SP工具!!!) 但在Application反问时发现这SP并没有值(只是默认值), 研究半天 猜想是跨进程服务导致我的SP访问不到,还是进程不同步呢? 后面我改成单例传进的是全局的Application ,不传Service 的mContext! 后记: 如是是通知栏里点击启动服务 //PendingIntent.FLAG_UPDATE_CURRENT更新当前Intent ,否则在onStartCommand无法获取数据 PendingIntent.getService(mContext, 0, startDownAction(), PendingIntent.FLAG_UPDATE_CURRENT); private Intent startDownAction() { current_state = DOWNLOAD_START; Intent intent = new Intent(mContext, UpdateService.class); intent.putExtra("isNotify",true);

Activity的启动流程分析

匆匆过客 提交于 2020-04-03 10:31:40
Activity是Android应用程序的四大组件之中的一个,负责管理Android应用程序的用户界面,一般一个应用程序中包括非常多个Activity,他们可能执行在一个进程中。也可能执行在不同的进程中。 我们主要通过启动在不同进程中的Activity,来分析Activity的启动流程及AMS对Activity的管理逻辑。 有两个应用程序App1和App2。在App1的Activity A中点击button 启动 App2中的Activity B。 通过分析以上ActivityB的启动过程来了解AMS对Activity的管理逻辑。 步骤1:Activity A告诉AMS服务准备启动Activity B 步骤2:AMS服务处理并通知Activity A所在的进程pause Activity A,Activity A所在的进程处理完毕之后。通知AMS服务Activity A已经完毕pause工作。 步骤3:Activity B所在的进程没有启动,AMS服务首先启动一个新的进程。新的进程启动完毕之后。通知AMS服务进程启动完毕。 步骤4:AMS服务通知新的进程来启动Activity B。新的进程启动Activity B完毕之后。通知AMS服务Activity B启动完毕。 在分析Activity启动流程之前我们先简介下应用进程和AMS服务通信方法。AMS服务和应用进程间属于不同的进程

android面试题整理

半世苍凉 提交于 2020-04-03 04:31:41
以下是整理的一些android面试题,希望对大家有用。 1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件. 我开发常用的的有ListActivity , PreferenceActivity 等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity. 2. 请描述一下Activity生命周期。 生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.. 在这个过程中 会针对不同的生命阶段会调用不同的方法 Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause 其实这些方法都是两两对应的,onCreate创建与onDestroy销毁; onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause; 这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢? 答案就是:在Activity被onStop后,但是没有被onDestroy

AndroidManifest.xml文件的理解

元气小坏坏 提交于 2020-04-02 09:28:23
一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示: 二,主要功能 它指定了该应用程序的Java包:该包名作为应用程序的一个独特标识。 它描述了应用程序组件:该应用程序由哪些activity,service,broadcast receiver和content provider组成。它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。这些声明使Android系统知道这 儿有什么组件以及在什么条件下它们可以被载入。 它决定那些进程将容纳应用程序组件。 它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。 它也声明了其他应用程序在和该应用程序交互时需要持有的许可。 它列出了Instrumentation类

Android Launcher 研究学习

痴心易碎 提交于 2020-04-01 14:09:22
Launcher是系统启动后第一个启动的程序,是其它应用程序的入口,也就是我们的手机程序的桌面程序; 一、Launcher的定义及构成: <1>通过查看官方提供的Launcher源码可以知道其实Launcher也是一个Activity,不过它的intent-fliter有点特殊; <activity android:name="Launcher" android:launchMode="singleTask" android:clearTaskOnLaunch="true" android:stateNotNeeded="true" android:theme="@android:style/Theme.Wallpaper.NoTitleBar" android:screenOrientation="nosensor" android:windowSoftInputMode="stateUnspecified|adjustPan"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME"/> <category android:name="android.intent.category