Android杂记(一)

Android系统架构

Android大致可以分为四层架构,五块区域


1.Linux内核层

Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、Wi-Fi驱动、电源管理等。

2.系统运行库层

这一层通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。

同样在这一层还有Android运行时库,他主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况做了优化处理。

3.应用框架层

这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序。

4.应用层

所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从Google Play上下载的小游戏,当然还包括你自己开发的程序。



requestWindowFeature(Window.FEATURE_NO_TITLE)

不在活动中显示标题栏

注意这句代码一定要在setContentView()之前执行,不然会报错。



在活动中使用Menu

首先在res目录下新建一个menu文件夹,在这个文件夹下面新建一个名叫main的菜单文件main.xml


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    
    <item
        android:id="@+id/add_item"
        android:title="Add"
        />
    
    <item
        android:id="@+id/remove_item"
        android:title="Remove"
        />
    
    
</menu>

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
//        getMenuInflater().inflate(R.menu.menu_main, menu);
        getMenuInflater().inflate(R.menu.main, menu);
        // 返回true表示允许创建的菜单显示出来 返回false创建的菜单将无法显示
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.add_item:
                Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this, "you clicked Remove", Toast.LENGTH_LONG).show();
                break;
            default:
        }
        return true;
    }



    @Override
    public void onClick(View v) {
        finish();
    }

可用于销毁一个活动



Intent(Context packageContext, Class<?> cls)


显式Intent

        Intent intent = new Intent(MAinActivity.this, SecondActivity.class);
        startActivity(intent);


隐式Intent

每个Intent中只能指定一个action,但却能指定多个category


            <intent-filter>
                <action android:name="com.example.activity.ACTION_START" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.example.activity.MY_CATEGORY" />
            </intent-filter>


				Intent intent = new Intent("com.example.activity.ACTION_START");
				intent.addCategory("com.example.activity.MY_CATEGORY");
				startActivity(intent);


使用隐式Intent打开网页

				Intent intent = new Intent(Intent.ACTION_VIEW);
				intent.setData(Uri.parse("http://www.baidu.com"));
				startActivity(intent);


        <activity android:name=".ThirdActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
            </intent-filter>
        </activity>


调用系统拨号界面

				Intent intent = new Intent(Intent.ACTION_DIAL);
				intent.setData(Uri.parse("tel:10086"));


向下一个活动传递数据


				String data = "Hello SecondActivity";
				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
				intent.putExtra("extra_data", data);
				startActivity(intent);
		Intent intent = getIntent();
		String data = intent.getStringExtra("extra_data");


返回数据给上一个活动

				Intent intent = new Intent(MainActivity.this, SecondActivity.class);
				// 1为请求码
				startActivityForResult(intent, 1);

				Intent intent = new Intent();
				intent.putExtra("data_return", "Hello MainActivity");
				// 第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值
				setResult(RESULT_OK, intent);
				finish();

由于我们是使用startActivityForResult()方法来启动SecondActivity的,在SecondActivity被销毁之后会回调上一个活动的onActivityResult()方法

因此我们需要在MainActivity中重写onActivityResult()方法

    /**
     * requestCode 请求码
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	switch (requestCode) {
    	case 1:
    		if (resultCode == RESULT_OK) {
    			String returnedData = data.getStringExtra("data_return");
    			Log.d("MainActivity", returnedData);
    		}
    		break;
    	default:	
    	}
    }


通过按Back键返回数据

重写onBackPressed()方法


	@Override
	public void onBackPressed() {
		Intent intent = new Intent();
		intent.putExtra("data_return", "Hello MainActivity");
		setResult(RESULT_OK, intent);
		finish();
	}




Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值