Ⅰ android 模拟器开机自动启动一个Activity问题
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
String action = "android.intent.action.BOOT_COMPLETED";
if (intent.getAction().equals(action)) {
Intent ss = new Intent(ctx, Hi.class);
ss.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(ss);
}
}
public class Hi extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello. I started!");
setContentView(tv);
}
}
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".Hi" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver" >
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>
我测试了 可以的。
Ⅱ android广播数据传递给activity 详细点
1
class MyReceiver extends BroadcastReceiver{
/**
* 接收广播
* @param context 上下文
* @param intent 就是通过sendBroadcast发送的Intent对象
*/
@Override
public void onReceive(Context context, Intent intent) {
}
}
2
//相当于搭电台
//定频段
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("androidxx.intent.action.CCTV");
//注册广播接收器
myReceiver = new MyReceiver();
/**
* 参数一 BroadcastRecriver 对象
* 参数二 IntentFileer对象 此对象用于决定接受什么频道的广播
*/
registerReceiver(myReceiver,intentFilter);
3
//发送广播信息
Intent intent = new Intent();
intent.setAction("androidxx.intent.action.CCTV");
intent.putExtra("msg","中C");
4
sendBroadcast(intent);
Ⅲ android 启动 activity 是什么意思
当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置。
1. Standard模式(默认)
我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,退出Activity则会在任务栈中销毁该实例。
2. SingleTop模式
这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。
3. SingleTask模式
如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的newInstance()方法重用该Activity,使该实例处于栈顶位置,否则就重新创建一个新的Activity实例。
4. SingleInstance模式
当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity。
Ⅳ android一个activity启动时会向系统发送一个默认广播吗android.intent.category.LAUNCHER这个是广播吗
你要捕捉的话,自己写一个广播发送。有两个方法,一个是动态注册(就是需要是注册发送),一个是静态的。
想监听的话,就是应用程序启动的时候发送广播。用service接受。我是这样做的。类是音乐播放器,在退出应用它还会继续播放。当再次点开始不影响播放,而且播放器上面的进度条和歌词都是更新过的时时改变。
Ⅳ android开发如何在广播里启动一个 activity
Intent intent1=new Intent(context,main.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
System.out.println("进入锁屏界面2");
Ⅵ android 的Service里面多次启动一个Activity只能用FLAG_ACTIVITY_NEW_TASK,那么怎么才能只启动一次呢
Activity只启动一次,需要设置Activity的启动模式。Activity启动模式有4种,分别为standard、singleTop、singleTask、singleInstance,只要设置为 singleTask就只会启动一次。
关于Activity四种启动模式的说明:
1.standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
2.singleTop 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
3.singleTask 只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
3.singleInstance只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
Ⅶ android开发 service 和activity 广播问题
这里我们先假定service发出内容时候的Action为ActionS。
如果activity里没有动态注册监听service发出的ActionS的广播, 即使Activity当前在使用中也不会得到通知, 更不用说未启动的Activity来捕获这个通知了。
要捕获这个字符串有两种方式, 分别如下
在AndroidManifest.xml中注册
<receiver android:name="YourBroadcastReceiver" >
<intent-filter>
<action android:name="ActionS" />
</intent-filter>
</receiver>
这样, 一旦有定义的ActionS发出来,YourBroadcastReceiver的onReceive方法就会回调了,这样的监听,不需要你的app已经在运行。你在onReceive方法里拦截处理。
2.在Activity中动态创建监听器, onCreate()中生成一个IntentFilter对象
IntentFilter filter=new IntentFilter();
//为IntentFilter添加一个ActionS
filter.addAction(ActionS);
yourBroadcastReceiver = newYourBroadcastReceiver();
registerReceiver(yourBroadcastReceiver, filter);
在onDestroy的时候去注册
unregisterReceiver(yourBroadcastReceiver);
这样的方式只有在Activity生命周期onCreate()-onDestroy()之间有效, 在YourBroadcastReceiver.onReceive()方法里拦截处理。
Ⅷ android-Android广播怎么传递数据给Activity
一种是像楼主所说的,在Activity里注册一个BroadcastReceiver,Service完成某个任务就可以发一个广播,接收器收到广播后通知activity做相应的操作。 另一种是,使用bindService来关联Service和Application,应用.apk里的所有组件一般情况都运行在同一个进程中,所以不需要用到IPC,bindService成功后,Service的Client可以得到Service返回的一个iBinder引用,具体的参见Service的文档及onBind的例子,这样Service的引用就可以通过返回的iBinder对象得到,如 public class LocalService extends Service { // This is the object that receives interactions from clients. See // RemoteService for a more complete example. private final IBinder mBinder = new LocalBinder(); public class LocalBinder extends Binder { LocalService getService() { return LocalService.this; } } @Override public IBinder onBind(Intent intent) { return mBinder; } } 之后Client通过这个iBinder对象得到Service对象引用之后,可以直接和Service通讯,比如读取Service中的值或是调用Service的方法。
Ⅸ Android 4.1.2 为什么写的广播注册后 必须运行一次activity才能...
SCREEN_ON和SCREEN_OFF只能在Activity和Service里面用,广播接收器不行,service不会自动启动 查看更多答案>>