使用app.Application对象中的startActivity(intent)启动和活动

时间:2011-10-13 11:29:08

标签: android

我有下一个问题。我有一个继承自Application的类。在这个课程中,我会跟踪android终端的gps位置。我需要在某些情况发生时发出警报,之后我需要启动一个活动(表单)供用户做出决定。

我正在使用正常的代码:

public class FondeoApplication extends Application{
  .....
  private void lanzaAlerta(){
      mediaPlayer.start(); 

      Intent intent = new Intent(FondeoApplication.this, AlertaActivity.class);
      startActivity(intent);
    }

但是下一次我得到了一个例外:

Thread [<1> main] (Suspended (exception AndroidRuntimeException))   
    ContextImpl.startActivity(Intent) line: 822 
    FondeoApplication(ContextWrapper).startActivity(Intent) line: 276   
    FondeoApplication.lanzaAlerta() line: 199   
    FondeoApplication.checkPosition(Location) line: 190 
    FondeoApplication.access$5(FondeoApplication, Location) line: 179   
    FondeoApplication$1.onLocationChanged(Location) line: 171   
    LocationManager$ListenerTransport._handleMessage(Message) line: 227 
    LocationManager$ListenerTransport.access$000(LocationManager$ListenerTransport, Message) line: 160  
    LocationManager$ListenerTransport$1.handleMessage(Message) line: 176    
    LocationManager$ListenerTransport$1(Handler).dispatchMessage(Message) line: 99  
    Looper.loop() line: 132 
    ActivityThread.main(String[]) line: 4123    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 491  
    ZygoteInit$MethodAndArgsCaller.run() line: 841  
    ZygoteInit.main(String[]) line: 599 
    NativeStart.main(String[]) line: not available [native method]  

我试图从一个继承自Activity的对象启动活动,一切正常,所以我想问题是我正在尝试从Application对象启动一个活动。

有谁知道实现这个目标的正确方法?

也许我没有很好地关注整个应用程序。但我知道保持一些代码在后台工作的唯一方法是使用Application对象。如果有人知道更好的方式,请告诉我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试过将Intent Flags设置为FLAG_ACTIVITY_NEW_TASK?

create_table "payment_options", force: :cascade do |t|
  t.integer  "amount"
  t.text     "description"
  t.string   "title"
  t.boolean  "user_accessible", default: true
  t.datetime "created_at",                     null: false
  t.datetime "updated_at",                     null: false
end

create_table "payments", force: :cascade do |t|
  t.string   "email"
  t.string   "token"
  t.integer  "question_id"
  t.datetime "created_at",        null: false
  t.datetime "updated_at",        null: false
  t.integer  "payment_option_id"
end

add_index "payments", ["payment_option_id"], name:    "index_payments_on_payment_option_id"
add_index "payments", ["question_id"], name: "index_payments_on_question_id"