• 【Android】【基础】


    Intent				 是一个消息传递对象
        <intent-filter> :		Activity的名片
    软件安装在手机,手机里的数据库,现在推荐使用LitePal数据库
    
    • 1
    • 2
    • 3
    // 发送消息给符合条件的Activity
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);               //要干嘛
    sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);    //带信息
    sendIntent.setType("text/plain");                       //类型
    
    // Verify that至少有一个应用能够处理该 Intent
    if (sendIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(sendIntent);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    //通过Intent意图,实现Activity之间的跳转
    startActivity(new Intent(this,BActivity.class));
    
    //启动该服务, 例如,如果在应用中构建了一个名为 DownloadService、旨在从网页下载文件的服务,则可使用以下代码:
    Intent downloadIntent = new Intent(this, DownloadService.class);
    downloadIntent.setData(Uri.parse(fileUrl));
    startService(downloadIntent);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    //获取系统服务,从而获取网络\音量\wifi 等信息
    getApplicationContext().getSystemService(NOTIFICATION_SERVICE);    //返回NotificationManager对象(按类将句柄返回到系统级服务)
    
    • 1
    • 2
    //存取文件
    getFilesDir();
    getCacheDir();
    getDir("名字",MODE_PRIVATE);   //私有数据,可覆盖
    
    • 1
    • 2
    • 3
    • 4
    //发送:消息装进Intent,调用
    sendBroadcast(new Intent().putExtra("name", "value"));
    //接收:
    new BroadcastReceiver().onReceive(this,intentRecieved); //只活10s,要做事交别人
    
    • 1
    • 2
    • 3
    • 4
    后台Service是依赖于应用程序的主线程的,不建议在Service中编写耗时操作,否则会引起ANR。
        那么我们当我们编写的耗时逻辑,不得不被service来管理的时候,就需要引入IntentService
            IntentService在执行onCreate操作的时候,内部开了一个线程,去你执行你的耗时操作。
                在消息被handler接受并且回调的时候,执行了重写的onHandlerIntent方法
    
    • 1
    • 2
    • 3
    • 4
    public class MyService extends Service {
        public MyService() {
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Fragment:是一个布局标签<Fragment>,用于组成一个 ActivityActivityCreated, 会调用FragmentonAtt(), onCreateView()等方法
    Fragment可以getActivity() 获取所在的Activity
    交换数据:eView()等方法
    Fragment可以getActivity() 获取所在的Activity
    交换数据:
        ActivityFragment.setArgument(new Buddle().putString()) 		//存数据
        FragmentgetArguments().get();							//取数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    Intent.putExtra(ID, UUID);                             //存id进intent
    UUID=(UUID)getIntent().getSerializableExtra(ID);       //取intent的id
    Fragment.setArguments(Bundle.putSerializable(ID,UUID)) //把id设为Fragment参数
    UUID = (UUID) getArguments().getSerializable(ID);      //取Fragment参数为id
    工厂.生产车间.getSomethingByID(UUID );                  //根据id创建东西
    
    • 1
    • 2
    • 3
    • 4
    • 5
    AIDL(Android 接口定义语言) 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 
         只有允许不同应用的客户端用 IPC 方式访问服务,并且想要在服务中处理多线程时,才有必要使用 AIDL。
    绑定服务是客户端-服务器接口中的服务器。
        eg:。后台播放音乐Service,通知栏界面上有上一曲,下一曲、暂停、播放等按钮,通过这些按钮还可以控制Service操作,这种情景就是使用的绑定
    不同的 Android 手机使用不同的 CPU,进而支持不同的指令集。 CPU 与指令集的每种组合都有专属的应用二进制界面,即 ABI:
        机器代码应使用的 CPU 指令集。
        运行时内存存储和加载的字节顺序。
        可执行二进制文件(例如程序和共享库)的格式,以及其支持的内容类型。
        用于在代码与系统之间传递数据的各种约定。 这些约定包括对齐限制,以及系统调用函数时如何使用堆栈和寄存器。
        运行时可用于机器代码的函数符号列表,通常来自非常具体的库集。
    
    ABI 支持的指令集 备注 
    armeabi ARMV5TE 和更高版本Thumb-1 在 r16 中已弃用。在 r17 中已移除。无硬浮点。 此 ABI 适用于基于 ARM 且至少支持 ARMv5TE 指令集的 CPU。
    armeabi-v7a armeabiThumb-2VFPv3-D16其他(可选) 与 ARMv5、v6 设备不兼容。 此 ABI 可扩展 armeabi 以包括多个 CPU 指令集扩展
    arm64-v8a AArch64  此 ABI 适用于基于 ARMv8 且支持 AArch64 的 CPU
    x86 x86 (IA-32)MMXSSE/2/3SSSE3 不支持 MOVBE 或 SSE4。 此 ABI 适用于支持通常称为“x86”或“IA-32”的指令集的 CPU
    x86_64 x86-64MMXSSE/2/3SSSE3SSE4.14.2POPCNT  此 ABI 适用于支持通常称为“x86-64”的指令集的 CPU
    
    注:NDK 以前曾支持 32 位和 64 位 MIPS,但这项支持已在 NDK r17 中移除。
    
    从厂家上来分是有三种,arm,x86,MIPS		#arm 系列是绝大多数手机上使用的,x86 主要是运用在平板上,而 MIPS 基本上就没见过。
    名字中没有64的就是32位的了。
    正常来说只使用 armeabi-v7a 就可以适配基本所有手机了,因为现在手机基本上都支持这种CPU架构
    arm64-v8a 的 CPU 架构上也能运行 armeabi-v7a, arm64-v8a 上本身搭载了 armeabi-v7a
    amd64(跟x86_64是一个东西,amd开发的,因特尔用了它给它起了自己的名字)
    x86(i386,i586.奔腾,大家都习惯叫因特尔的处理器叫x86系列,即使它是64位的)
    如果应用中有不止一个 so,那就要注意了,如果这时你一个 so 同时支持了 armeabi-v7a 和arm64-v8a
    而另一个 so 只支持了一种,那可能会运行有问题,这时要么另一个 so 也支持两种,要么把第一个 so 删掉对应目录,只支持相同的一种。
    //在提供支持多个 CPU 架构的 SDK 时,可以同时提供多个目录的 so,虽然此时 SDK 相对较大,但是被编译的 so 还是以你在 gradle 里设置的支持的 ndk 为准: 
    ndk { 
    abiFilters ‘armeabi-v7a’ 		// , ‘arm64-v8a’, ‘x86’, ‘x86_64’ 
    }					//查看设备支持的 CPU 架构或者 APP 提供的 CPU 架构可以使用 Native Libs Monitor。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    //先在你的 oldActivity 中 
    startActitivyForResult(newActivity);
    //newActivity  返回的时候就回到了你原来的 oldActivity 中调用 onActivityResult() 了
    //MainActivity 
    extends AppCompatActivity(android.support.v7.app) 
    extends FragmentActivity extends SupportActivity(android.support.v4.app)  
    extends Activity extends  ContextThemeWrapper extends  ContextWrapper extends Context(android.app)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    MyBatis ognl.NoSuchPropertyException 或者 Invalid bound statement (not found)
    linux 服务器类型Apache配置https访问
    DNS域名解析协议与弱口令登录
    day074:XML、XML的解析
    手机的网费
    LabVIEW通讯-GPIB
    MySQL语句基本介绍
    自动化测试有必要学吗?一篇从功能测试进阶到自动化测试...
    AI在5G行业专网的应用场景和使能技术
    laravel 发生异常时回滚数据库变化
  • 原文地址:https://blog.csdn.net/a571574085/article/details/126099912