Activity类onNewIntent()方法详解

先找到Activity.java看看里面的方法怎么解释的:

    /**
     * This is called for activities that set launchMode to "singleTop" in
     * their package, or if a client used the {@link Intent#FLAG_ACTIVITY_SINGLE_TOP}
     * flag when calling {@link #startActivity}.  In either case, when the
     * activity is re-launched while at the top of the activity stack instead
     * of a new instance of the activity being started, onNewIntent() will be
     * called on the existing instance with the Intent that was used to
     * re-launch it. 
     *  
     * <p>An activity will always be paused before receiving a new intent, so 
     * you can count on {@link #onResume} being called after this method. 
     * 
     * <p>Note that {@link #getIntent} still returns the original Intent.  You 
     * can use {@link #setIntent} to update it to this new Intent. 
     * 
     * @param intent The new intent that was started for the activity. 
     *  
     * @see #getIntent
     * @see #setIntent 
     * @see #onResume 
     */
    protected void onNewIntent(Intent intent) {
    }
当Activity的launchMode为singleTop的时候就会进行调用

在MainActivity.java中实现onNewIntent()方法进行测试一下:

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		Log.i("onNewIntent", "onNewIntent method");
	}
同时在AndroidManifest.xml中进行设置LaunchMode:

        <activity
            android:name="com.example.wifitest.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

测试:

启动应用,home键退出后,再进入此应用:

可看到DDMS的输出:


08-03 01:59:08.482: I/onNewIntent(25390): onNewIntent method

再使用命令进行测试:

am start -n com.example.wifitest/.MainActivity

输出:

am start -n com.example.wifitest/.MainActivity
Starting: Intent { cmp=com.example.wifitest/.MainActivity }
Warning: Activity not started, its current task has been brought to the front

同时每使用命令一次,DDMS输出结果一次


如果再AndroidMenifest.xml中去掉设置lunchermode,2种不同的命令启动进行对比:

am start -n com.example.wifitest/.MainActivity
无输出:

am start --activity-single-top  -n com.example.wifitest/.MainActivity
每使用命令一次,DDMS输出结果一次

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值