activity

Error running app:Default Activity not found 解决方法

瘦欲@ 提交于 2020-04-01 14:10:24
问题显示 Error running app:Default Activity not found 此时你会发现运行不了,这是因为在AndroidManifest.xml文件中,我们只是注册了活动,并没有为程序配置主活动(当程序运行的时候,不知道先启动那个活动),所以只要添加几行代码即可。在<activity>标签里加入<intent-filter>标签即可 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" android:label="This is FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/

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

Android Activity 和 ViewGroup中事件触发和传递机制

陌路散爱 提交于 2020-03-30 02:24:28
在Android中,Activity和View都能接收触摸和按键事件,如果响应事件只需要在继承类里复写事件函数即可。 1.在只有Activity的情况: 1)Touch事件触发流程: 首先触发dispatchTouchEvent 然后触发onUserInteraction 再次onTouchEvent 如果是点击的话,紧跟着下列事件(点击分俩步,ACTION_DOWN,ACTION_up) 触发dispatchTouchEvent 再次onTouchEvent 当ACTION_up事件时不会触发onUserInteraction(可查看源代码) 2)键盘事件触发流程: 首先触发dispatchKeyEvent 然后触发onUserInteraction 再次onKeyDown 如果按下紧接着松开,则是俩步 紧跟着触发dispatchKeyEvent 然后触发onUserInteraction 再次onKeyUp 注意与触摸不同,当松开按键时onUserInteraction也会触发。  总之: Activity.dispatchTouchEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的触摸事件。 (同理 dispatchKeyEvent) 2. Activity里有一个Layout,在Layout里有个按钮情况:

Activity启动过程源代码分析

时光毁灭记忆、已成空白 提交于 2020-03-28 07:09:31
事实上写分析源代码文章总会显得非常复杂非常乏味,可是梳理自己看源代码时的一些总结也是一种提高。 这篇博客分析下Activity启动过程源代码,我会尽量说得简单点。 个人的观点是看源代码不能看得太细,否则就会花费非常多时间并不是常难理清整个过程。所以本次分析重在理清activity的一个启动流程。 首先大概总结下activity启动的整个流程。这个过程涉及到Instrumentation,ActivityThread,和ActivityManagerService(AMS)。通过Binder向AMS发请求,AMS内部有一个ActivityStack。它负责栈内的Activity同步,AMS去通过ActivityThread去调用Activity的生命周期方法完毕Activity的启动。 假设对Binder进程间通信不了解可看下 IPC——android进程间通信 先上一张总图,等看完博客能够再回头来看下这图: 一.启动预处理 启动一个activity最经常使用的方法就是 startActivityForResult 或者startActivity。而startActivity也是调用startActivityForResult,所以此次分析入口当然是startActivityForResult。 public void startActivityForResult(Intent

AMS的startActivity分析

≯℡__Kan透↙ 提交于 2020-03-28 06:26:53
AMS的startActivity最终是调用的 startActivityAndWait 来处理启动请求的: 1 @Override 2 public final WaitResult startActivityAndWait( 3 IApplicationThread caller, //在多数情况下,一个Activity是由一个应用进程发起的,IApplicationThread是应用进程和AMS交互的通道,也可算是调用进程的标识 4 String callingPackage,//调用的包名,即发起启动请求的包名 5 Intent intent, 6 String resolvedType, 7 IBinder resultTo, //用于接收startActivityForResult的结果 8 String resultWho, 9 int requestCode,//这个是调用者来定义其意义,若值大于等于0,则AMS内部保存该值并通过onActivityResult返回调用者 10 int startFlags, 11 ProfilerInfo profilerInfo,//性能统计相关 12 Bundle options, 13 int userId//用户id 14 ) { 15 enforceNotIsolatedCaller(

对Android近期任务列表(Recent Applications)的简单分析

醉酒当歌 提交于 2020-03-28 05:09:45
转载请注明出处,谢谢! 这里的近期任务列表就是长按Home键出来的那个Dialog,里面放着近期打开过的应用,当然3.0以上系统的多任务切换键也是。 这个Dialog的实现在Android源码的 /frameworks/base/policy/src/com/android/internal/policy/impl/RecentApplicationsDialog.java 中。 接下来就对这个源码分析一下。 先把整个源码贴出来: 1 public class RecentApplicationsDialog extends Dialog implements OnClickListener { 2 // Elements for debugging support 3 // private static final String LOG_TAG = "RecentApplicationsDialog"; 4 private static final boolean DBG_FORCE_EMPTY_LIST = false; 5 6 static private StatusBarManager sStatusBar; 7 8 private static final int NUM_BUTTONS = 8; 9 private static final int MAX

AndroidManifest.xml 文件解读

坚强是说给别人听的谎言 提交于 2020-03-26 15:32:47
一、关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试) 二、AndroidManifest.xml结构 <?xmlversion="1.0"encoding="utf-8"?> <manifest> <application> <activity> <intent-filter> <action/> <category/> </intent-filter> </activity> <activity-alias> <intent-filter></intent-filter> <meta-data/> </activity-alias> <service> <intent-filter></intent-filter> <meta-data/> </service> <receiver> <intent-filter></intent

Android基础-Fragment详解

余生长醉 提交于 2020-03-25 07:45:23
一、目录 什么是Fragment Fragment的生命周期 Fragment的使用方式 什么是Fragment的回退栈?【重要】 Fragment与Activity之间的通信【难点】 Fragment与Activity通信的优化【超难点】 如何处理运行时配置发生变化【以屏幕翻转为例】 二、Fragment详解 1.什么是Fragment? 你可以简单的理解为,Fragment是显示在Activity中的Activity。 它可以显示在Activity中,然后它也可以显示出一些内容。因为它拥有自己的生命周期,可以接受处理用户的事件,并且你可以在一个Activity中动态的添加,替换,移除不同的Fragment,因此对于信息的展示具有很大的便利性。 2.Fragment的生命周期 因为Fragment是依附于Activity存在的,因此它的生命周期收到Activity的生命周期影响: Fragment比Activity多了几个生命周期的回调方法 onAttach(Activity) 当Fragment与Activity发生关联的时候调用 onCreateView(LayoutInflater, ViewGroup, Bundle) 创建该Fragment的视图 onActivityCreate(Bundle) 当Activity的onCreated方法返回时调用

Fragment 碎片学习

烂漫一生 提交于 2020-03-24 20:59:17
Fragments是什么?   碎片(Fragment)是一种可以嵌入在活动当中的 UI 片段,它能让程序更加合理和充分 地利用大屏幕的空间,因而在平板上应用的非常广泛。   创建一个动态的、多窗格在Android用户界面,您需要将UI组件和Activity行为封装到模块,而这些模块你可以用来交换的活动。 您可以创建这些模块与Fragment类,这行为有点像一个嵌套的Activity,可以定义自己的布局和管理自己的生命周期。 Fragment 的生命周期 碎片的生命周期类似于活动的生命周期,可能的状态如下: 1. 运行状态   当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行 状态。 2.暂停状态   当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与 它相关联的可见碎片就会进入到暂停状态。 3. 停止状态   当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态。或者通过调 用 FragmentTransaction 的 remove()、replace()方法将碎片从活动中移除,但有在事务提 交之前调用 addToBackStack()方法,这时的碎片也会进入到停止状态。总的来说,进入 停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收。 4. 销毁状态   碎片总是依附于活动而存在的,因此当活动被销毁时

第八次作业--Fragment

醉酒当歌 提交于 2020-03-24 19:31:46
Fragment是什么?   Fragment (碎片)是一种嵌入在Activity中的UI片段,它可以用来描述Activity中的一部分布局。如果Activity 界面布局中的控件比较多比较复杂,那么Activity管理起来就很麻烦,我们可以使用Fragment把屏幕划分成几个片段,进行模块化的管理,从而使程序更加合理和充分地利用屏幕的空间。 Fragment为什么会出现?    随着移动设备的迅速发展,不仅手机成为人们生活中的必需品,就连平板电脑也交得,光明普及。平板电脑与手机最大的差别就在于屏格的大小,屏幕大小的差距可能会使同样的界面在不同的设备上显示出不同的效果,为了 能够同时兼顾到手机和平板电脑的开发。 如何创建Fragment? ublic class NewListFragment extends Fragment { public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle saveInstanceState) { View v= inflater.inflate(R.layout.fragment, container, false); return v; } } 如何在Activity中添加Fragment? 方式一:1.在布局文件中添加Fragment