Android 线程AsyncTask

1.AsyncTask

Android已经到了最后阶段,突然蹦出来线程这一难题,真的是把我弄晕了
首先我们明确为什么存在线程? 我们已经存在一个主程序,为什么要加一个呢?当我们的程序在请求网络时,我们希望主程序还可以运行吗?现在的程序一般都是后台下载,那前台下载你见过吗?点完下载,程序就变成下载的进度条了,软件不能用了;这样当然是不好的,所以才有了线程;

就像是一个客栈,有大厨,有掌柜的,有跑堂的;如果说这家客栈就一个人,那是不是就忙不过来了呢;

我们要看的程序是一个从网站获取链接与信息的程序;

more >>

标题栏 层级导航

1

最初我们的标题栏导航是怎样的呢?

点击标题栏按钮,触发事件,创建一个Intent ,打开新页面;

1
2
3
Intent intent = new Intent(getActivity(),CrimePagerActivity.class);
intent.putExtra(CrimeFragment.EXTRA_CRIME_ID,crime.getmId());
startActivityForResult(intent,0);

Intent?我们知道用Intent可以随便打开那个页面,那么这种导航就没有明确的父子关系,且必须知道要去哪里;简单地说,小李坐车去女朋友家,司机说:“我知道你女朋友在那里,上车” 实际上去哪里,是司机说的算;

more >>

样式与include

1

简单来说样式是为了复用;

style 中创建样式

1
2
3
4
5
6
7
8
<style name="RemoteButton">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textColor"># 556699</item>
<item name="android:textSize">20dp</item>
<item name = "android:layout_margin">3dp</item>
</style>

控件使用某种样式;

more >>

JSON数据保存与加载

首先我们盘点一下参与者

Crime 罪犯类,
CrimeLab 罪犯列表类
CriminalIntentJSONSerializer 罪犯json化 并且保存

没有视图也没有控制的事 三个模型类玩游戏

保存和加载自然归CriminalIntentJSONSerializer管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CriminalIntentJSONSerializer {
private Context context;
private String Filename;
public CriminalIntentJSONSerializer(Context c, String f)
{
context = c;
Filename = f;
}
public void saveCrimes(ArrayList<Crime> crimes) throws JSONException,IOException
{....}
public ArrayList<Crime> loadCrimes() throws IOException,JSONException
{....}

more >>

mvc与音频播放

mvc
m:模型
v :视图
c :控制

模型层,可以粗略理解为是属于纯纯的类,绝不与v层有任何关系,就音频播放来说,音频是数据,绝对是属于m层,那么相对应的就有一些控制音频的方法;模型层最接近于java里面的类;

1
2
3
4
5
6
7
8
public class AudioPlayer { //音频播放器和管理它的方法
private MediaPlayer player;
public void stop(){...}
public void play(Context c)
{...}
public void pause()
{...}
}

v层 视图层,主要用于展现视图,有页面,以xml为例,不管有没有人用,都是一个页面,fragment加载就叫做fragment ,activity加载就叫做activity;

c层,最麻烦的一层,我们非常容易的能够看见c层有一大堆的代码,而且都是必须的;

1
2
3
4
protected void onCreate(Bundle savedInstanceState) { //加载xml页面,此处是activity,fragment一布局形式加入activity中
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_moon);
}

more >>