安卓应用开发初学

一、第一次不知道如何在手机上调试

刚接触,查找资料以为在模拟器上更还调试,经同事指导:“直接将手机连到电脑上,android studio就可以识别手机,如下图红框1,点击红框2 ,就可以将编译好的apk发送到手机上查看效果”

二、activity组件布局 activity_main.xml

官方activity清单文件学习:https://developer.android.com/guide/topics/manifest/manifest-intro?hl=zh-cn

activity_main.xml默认的标签是<android.constraintlayout.widget.ConstraintLayout>,这个会导致再增加其他如Button时

全部在页面正中间布局,换成LinearLayout就可以多个布局横向或者竖向排列

三、activity是否必须存在?

activity和service等组件时通过AndroidManifest.xml文件启动的....依然有一定的疑问

四、service的创建

https://www.cnblogs.com/linfenghp/p/5571353.html

五、AIDL通信

1、创建一个AidlService的工程

(1)创建一个aidl文件(右键new一个aidl文件)

在新创建的IPay接口里,添加一个pay()方法

(2)创建一个MyService

package com.example.aidlservice;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.widget.Toast;

import androidx.annotation.Nullable;


public class MyService extends Service {
    public MyService(){
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    public void payService(){
        Log.i("MyService", "payService : -------");
    }
    class MyBinder extends IPay.Stub{
        @Override
        public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {

        }
        public void pay(){
            payService();
        }
    }
}

(3)将service组件在AndroidManifest.xml里开启

2、创建AidlClient工程

(1)将AidlService的aidl文件复制过来,注意:AidlClient的aidl文件的包名跟AidlSerive的包名一样,暂时不知如何直接复制过来。

(2)创建一个按钮,绑定远程service

package com.example.aidlclient;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.aidlservice.IPay;

public class MainActivity extends AppCompatActivity {
    Button btnPay;
    private IPay myBinder;

    ServiceConnection conn = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            myBinder = IPay.Stub.asInterface(service);
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent();
        intent.setAction("com.example.aidlservice.MyService");

        intent.setPackage("com.example.aidlservice");
        bindService(intent, conn, BIND_AUTO_CREATE);

        btnPay = (Button)findViewById(R.id.btnPay);
        btnPay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    myBinder.pay();
                    Toast.makeText(getApplicationContext(), "click..hhh..", Toast.LENGTH_SHORT).show();
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

(3)创建按钮调用远程服务

学习中出现的问题:

1、AidlClient的aidl文件携程了默认的AidlClient的包名,导致调用出错

AIDl学习参考:

https://www.cnblogs.com/xqz0618/archive/2018/04/27/aidl_service.html(主要参考

Android Studio中aidl的使用示例-百度经验

android进阶-AIDL的基本使用 - 简书

https://www.cnblogs.com/androidxiaoyang/p/5917570.html

AIDL使用详解及原理 - 简书

https://www.cnblogs.com/xqz0618/archive/2018/04/27/aidl_service.html

Android Studio中aidl的使用示例-百度经验

布局  |  Android 开发者  |  Android Developers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
"Android应用开发揭秘PDF"是一本关于Android应用开发的PDF电子书。该书的目的是揭示Android应用开发的一些核心概念、技术和实践经验。在这本书中,作者详细介绍了如何利用Android操作系统开发应用程序,从基础知识到高级技术都有涉及。 该书首先介绍了Android应用开发的基本知识,包括Android操作系统的架构和组件,以及开发环境的搭建。接着,作者详细讲解了Android应用的UI设计和布局,包括使用XML和Java代码来设计用户界面,并且介绍了如何处理用户的输入和交互。 除了UI设计,该书还着重介绍了Android应用的数据存储和管理。作者详细解释了如何使用SQLite数据库来存储和检索数据,以及如何使用Shared Preferences来保存应用的设置。此外,该书还讨论了如何使用网络和Web服务,在应用中实现数据的远程获取和交互。 在高级技术方面,该书涵盖了广播接收器、服务、内容提供者和异步任务等重要主题。作者详细讲解了这些概念的原理、使用方法和最佳实践。此外,该书还提供了一些关于应用性能优化和调试的技巧,以及如何发布应用到Google Play商店的指南。 总的来说,"Android应用开发揭秘PDF"是一本帮助初学者入门和提高Android应用开发技能的实用指南。通过阅读这本书,读者可以全面了解Android应用开发的方方面面,并且能够独立开发出功能齐全、用户友好的Android应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值