adb:) adb shell am

使用 am 命令可以在命令行方式下启动系统中已经存在的 app.


adb shell 进入命令行。


am 回车,可以看到关于 am 的帮助信息。


关于各个参数的含义,在这里不再赘述,举几个例子即可。


为了说明问题,自己写一个 app,一个 activity、一个 service:


                                         


源码:

package mark.zhang;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;

public class AmActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		IntentFilter mFilter = new IntentFilter();
		mFilter.addAction("action_finish");
		registerReceiver(listener, mFilter);
	}

	private BroadcastReceiver listener = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if ("action_finish".equals(action)) {
				new Handler().postDelayed(new Runnable() {

					@Override
					public void run() {
						finish();
					}
				}, 5000);
			}
		}
	};

	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(listener);
	};
}

package mark.zhang;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void onCreate() {
		super.onCreate();
		Log.d("mark", "MyService--- onCreate callbacks");
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		Log.d("mark", "MyService--- onStartCommand callbacks");
		return super.onStartCommand(intent, flags, startId);
	}

}

在 AmActivity 里面接收到广播就在 5s 后 finish. 


将这个工程编译之后的 apk 安装到模拟器:


adb install  **/Am.apk


1. 启动 activity


 am start -n mark.zhang/mark.zhang.AmActivity


这个时候 activity 被启动了

                                      


2.  发送广播


am broadcast -a "action_finish"


5s 之后,可以看到 AmActivity 被 finish.


3. 启动服务


am startservice -n mark.zhang/mark.zhang.MyService


打印信息


                                     


相关源码


framworks/base/cmds/am/src/com/android/commands/am/Am.java


程序入口


 /**
     * Command-line entry point.
     *
     * @param args The command-line arguments
     */
    public static void main(String[] args) {
        try {
            (new Am()).run(args);
        } catch (IllegalArgumentException e) {
            showUsage();
            System.err.println("Error: " + e.getMessage());
        } catch (Exception e) {
            System.err.println(e.toString());
            System.exit(1);
        }
    }






©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页