android一个初级问题

liuliunumberone 2011-08-08 03:17:00
最近调试看别人的android的程序,我对android的整个机制有一些不大理解,主要是程序中有一个LauchActivity.java的文件,其代码如下:
package com.testCamera;

import android.app.Activity;
import android.os.Bundle;

public class LaunchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
而项目中还有一个testCamera.java,其中部分代码如下:
package com.testCamera;

import java.util.Timer;
import java.util.TimerTask;

public class testCamera extends Activity {
/** Called when the activity is first created. */
private SurfaceView sfvCamera;
private SFHCamera sfhCamera;
private ImageView imgView;
private View centerView;
private TextView txtScanResult;
private Timer mTimer;
private MyTimerTask mTimerTask;
// 按照标准HVGA
final static int width = 480;
final static int height = 320;
int dstLeft, dstTop, dstWidth, dstHeight;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("Android条码/二维码识别Demo-----hellogv");
imgView = (ImageView) this.findViewById(R.id.ImageView01);
centerView = (View) this.findViewById(R.id.centerView);
sfvCamera = (SurfaceView) this.findViewById(R.id.sfvCamera);
sfhCamera = new SFHCamera(sfvCamera.getHolder(), width, height,
previewCallback);
txtScanResult=(TextView)this.findViewById(R.id.txtScanResult);
// 初始化定时器
mTimer = new Timer();
mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 0, 80);
}
后面部分省略。
我主要不解的是,两个文件代码同属于com.testCamera包,而我觉得onCreate应该是启动程序吧?那为什么两个文件中都写了onCreate(...)的代码呢?运行哪一个呢?而且删了还会运行出错,这个到底是为什么呢?
启动不是有一个onCreate(...)就可以了的吗?LauchActivity.java中的onCreate有什么用呢?
求解。。谢谢
...全文
178 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿提饭 2011-08-17
  • 打赏
  • 举报
回复
2楼正解,要知道程序的入口,要查看manifest.xml,主要activity中有intent-filter标签的,关键这一句:<action android:name="android.intent.action.MAIN" />
yiersanxuexi 2011-08-15
  • 打赏
  • 举报
回复
LS正解,看下AndroidManifest.xml中的配置就知道了
xinyetonghua 2011-08-15
  • 打赏
  • 举报
回复
不知你问的是不是这些
xinyetonghua 2011-08-15
  • 打赏
  • 举报
回复
两个类都继承了Activity,每个Activity 都有oncreate方法,看首先启动谁得看配置文件AndroidManifest.xml

有 <action android:name="android.intent.action.MAIN" />的才会首先启动
liuliunumberone 2011-08-09
  • 打赏
  • 举报
回复
PS:工程中没有startactivity
liuliunumberone 2011-08-09
  • 打赏
  • 举报
回复
这个我知道,我是想知道这个项目的运行先后。以及什么时候调用了launchactivity.java里面的Oncreate,但我用log跟踪,却始终没有调用lauchactivity.java里面的oncreate,所以困惑。
[Quote=引用 1 楼 azx2008 的回复:]
应该是右击项目名称运行,而不是说点击某一个java文件运行
[/Quote]
liuliunumberone 2011-08-09
  • 打赏
  • 举报
回复
恩,这个我知道,我用log跟踪了,发现运行的是testCamera.java里面的oncreate函数,但是我想知道launchactivity.java里面的oncreate既然写了,什么时候用到呢,log始终没有它的运行,删了它又会出错,所以困惑。
[Quote=引用 2 楼 dinjay 的回复:]
...onCreate是activity创建时的回调函数,一个工程可以有n个activity,但是同一时刻只会有一个activity在屏幕上显示。
startactivity可以启动指定的activity
[/Quote]
jason_wks 2011-08-08
  • 打赏
  • 举报
回复
2楼正解。从名称上看,本程序应该是以LaunchActivity为启动程序的主入口,所以最先开始的是LaunchActivity里的onCreate().可以在每个onCreate()里添加Log.i()来追踪程序执行的过程。
张沟老王 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fff32165 的回复:]

详细步骤如下:

第一次启动FristActivity时,它的执行顺序为:
onCreate (Frist) - onStart (Frist) – onResume (Frist)

启动SecondActivity时,它的执行顺序为:
onPause (Frist) – onCreate (Second) – onStart (Second) -
……
[/Quote]


六百万 2011-08-08
  • 打赏
  • 举报
回复
详细步骤如下:

第一次启动FristActivity时,它的执行顺序为:
onCreate (Frist) - onStart (Frist) – onResume (Frist)

启动SecondActivity时,它的执行顺序为:
onPause (Frist) – onCreate (Second) – onStart (Second) -
onResume (Second) – onStop (Frist)
说明:只有在第二个Activity启动完成后才会停止第一个Activity

再次退回到FristActivity,它的执行顺序为:
onPause (Second) – onRestart (Frist) -onStart (Frist) – onResume (Frist) –
onStop (Second) – onDestroy (Second)

退出FristActivity,它的执行顺序为:
onPause (Frist) – onStop (Frist) – onDestroy (Frist)
liu_xiao_su 2011-08-08
  • 打赏
  • 举报
回复
2楼的回答很简洁。
imhongbo 2011-08-08
  • 打赏
  • 举报
回复
onCreate是activity创建时的回调函数,一个工程可以有n个activity,但是同一时刻只会有一个activity在屏幕上显示。
startactivity可以启动指定的activity
菲尔莫属 2011-08-08
  • 打赏
  • 举报
回复
好好研究下activity生命周期就知道了
pmlxp 2011-08-08
  • 打赏
  • 举报
回复
楼上正解
dinjay 2011-08-08
  • 打赏
  • 举报
回复
...onCreate是activity创建时的回调函数,一个工程可以有n个activity,但是同一时刻只会有一个activity在屏幕上显示。
startactivity可以启动指定的activity
azx2008 2011-08-08
  • 打赏
  • 举报
回复
应该是右击项目名称运行,而不是说点击某一个java文件运行

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧