Android 无法获取启动意图的上下文

Android 无法获取启动意图的上下文,android,android-intent,null,android-context,Android,Android Intent,Null,Android Context,我已经创建了一个单独的类来启动和意图,因为我想从中启动意图的类是一个线程,不从活动继承,也不会启动startActivity。每次启动应用程序时,上下文都会出现空指针异常 public class ToLaunch extends Activity { public void launchScoreloop() { con.getApplicationContext(); startActivity(new Intent(this, Leaderboard

我已经创建了一个单独的类来启动和意图,因为我想从中启动意图的类是一个线程,不从活动继承,也不会启动startActivity。每次启动应用程序时,上下文都会出现空指针异常

public class ToLaunch extends Activity {
    public void launchScoreloop() {
        con.getApplicationContext();
        startActivity(new Intent(this, LeaderboardsScreenActivity.class));
    }
}

如果thread是活动中的一个内部类,那么可以使用

    startActivity(new Intent(YourActivity.this, LeaderboardsScreenActivity.class));

    If it is a separate class you can make a constructor that take context has constructor as argument and you can pass your activity context into that constructor


    Context con;
    public YourThread(Context context){
     con = context;
    }
从活动内部创建线程对象时

    YourThread thread = new YourThread(this);

您正在编写一个活动,并且没有重写方法
onCreate()

请参阅这两篇关于使用意图启动其他活动的教程:

如果要从另一个类启动活动,应将上下文传递给第二个类,如下所示:

SecondClass instance = new SecondClass(this);
public void SecondClass(Context _context){
   this.context = _context;
}
this.context.startActivity(....);
第二节课的老师是这样的:

SecondClass instance = new SecondClass(this);
public void SecondClass(Context _context){
   this.context = _context;
}
this.context.startActivity(....);
然后,您可以使用传递给第二个类的上下文启动Avtivity,如下所示:

SecondClass instance = new SecondClass(this);
public void SecondClass(Context _context){
   this.context = _context;
}
this.context.startActivity(....);

根本无法理解你,这是启动新意图的错误方式……请参考一些简单的android示例……你可能想了解一下,将上下文传递给其他线程以避免活动长期存在和内存泄漏通常不是一个好主意。也就是说,您最好使用WeakReference来保存Context.Thanx来获取信息。但若我们将上下文作为弱引用,并且它在线程使用它之前被垃圾收集,那个会怎么样呢。当上下文为null时,它将使应用程序崩溃。最好使用AsynTask运行修改UI的处理:)@anujprashar您可以检查WeakReference是否仍然持有对上下文的有效引用(.get()返回null),并避免对其执行任何操作+Houcine的建议也值得投资。我可能不应该延长活动时间,这只是为了我可以使用startActivity()。我想要的是一个简单的方法,就是从一个没有上下文传递的线程中启动一个意图。