Ⅰ 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不會自動啟動 查看更多答案>>