2012-12-20 63 views

回答

5

首先你的Main.java需要註冊爲接收者。你可以在Main.java的的onResume()進行註冊:

@Override 
public void onResume() { 
    registerReceiver(broadcastReceiver, new IntentFilter(BroadcasterClassName.NAME_OF_ACTION)); 
} 

然後處理廣播和完成你的活動:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(BroadcasterClassName.NAME_OF_ACTION)) { 
      finish(); 
     } 
    } 
} 
+0

這是最好的方法 – jtwigg

+0

@Jack Sobremonte謝謝你的回答,我接受你的代碼,但我有兩個java類文件main.java是我的活動,receiver.java是我的廣播接收文件,然後我如何使用接收器類文件調用活動... – appukrb

+0

然後,您的Main.java需要擴展Receiver,並且Receiver.java將擴展活動 – jesobremonte

-1

你可以這樣做: 在你的主要有:

private static Main mInstance; 

onCreate() 
{ 
    ... 
    mInstance = this; 
} 

public static boolean closeActivity() 
{ 
    if (mInstance != null) 
    { 
     mInstance.finish(); 
     return true; 
    } 
    return false; 
} 

雖然,這意味着只有一個主要存在於任何一個時間。我認爲你可以通過在清單中添加android:noHistory =「true」或類似的東西來實現。

+0

我怎麼從廣播接收機打電話 – appukrb

0

你可以發送郵件到它實現Handler.Callback活性,在那裏處理它以關閉活動。

簡單的例子:

class Act1 extends Activity implements Handler.Callback { 
public static final int CLOSE_ACTIVITY = 54212; 
public boolean handleMessage(Message msg) { 
    if(msg.what == CLOSE_ACTIVITY) { 
    finish(); 
    } 
} 
} 

然後,因爲你廣播接收器可以運行在主線程,在大多數情況下。只需通過Handler發送消息。

new Handler().sendMessage(MessageFactory.createShutdownMsg()). 
+1

MessageFactory沒有在任何包中給出。 – Ajeet

+0

請提供'MessageFactory'的實現/庫 –