初学Android开发,如何在thread中传入context
初学Android开发,如何在thread中传入context在子线程中实例化sqlite是需要传入context,怎么实现...
初学Android开发,如何在thread中传入context在子线程中实例化sqlite是需要传入context,怎么实现
展开
3个回答
展开全部
自定义MyRunnable内部类实现Runnable接口
将Context作为内部类MyRunnable的成员变量
在主程序中使用并启动子线程,查看log输出是否正确
具体代码如下:
public class Test extends BaseActivity {
class MyRunnable implements Runnable {
/**
* 成员变量Context
*/
Context context;
/**
* 构造函数 将程序所需Context传入
*/
public MyRunnable(Context context) {
//为成员变量赋值
this.context = context;
}
@Override
public void run() {
//测试使用context
Log.i("", context.getPackageName());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 构造MyRunnable 并传入所需Context
MyRunnable runnable = new MyRunnable(this);
Thread thread = new Thread(runnable, "测试线程");
//启动线程
thread.start();
}
}
注意:内部类中对于Context的引用要及时释放,以防止程序内存泄漏!
展开全部
在本类里添加Context context;
构造方法里将context 传入,然后this.context = context;
这样在你这个类里面再写子线程的时候就可以用传过来的context了。
构造方法里将context 传入,然后this.context = context;
这样在你这个类里面再写子线程的时候就可以用传过来的context了。
追问
明白了 谢谢
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class TestClass extends Activity {
//方法一:定义一个全局的 Context对象,在外部定义好
static Context context =null;
void test1(){
context= this;
new Thread(new Runnable(){
@Override
public void run() {
context.getClass();
}}
).start();
}
//方法二:自定义一个MyThread,继承Thread,并且在MyThread中定义一个Context类型
void test2(){
MyThread thread =new MyThread();
thread.context = this;
}
}
class MyThread extends Thread{
public Context context;
}
//方法一:定义一个全局的 Context对象,在外部定义好
static Context context =null;
void test1(){
context= this;
new Thread(new Runnable(){
@Override
public void run() {
context.getClass();
}}
).start();
}
//方法二:自定义一个MyThread,继承Thread,并且在MyThread中定义一个Context类型
void test2(){
MyThread thread =new MyThread();
thread.context = this;
}
}
class MyThread extends Thread{
public Context context;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |