初学Android开发,如何在thread中传入context

初学Android开发,如何在thread中传入context在子线程中实例化sqlite是需要传入context,怎么实现... 初学Android开发,如何在thread中传入context在子线程中实例化sqlite是需要传入context,怎么实现 展开
 我来答
Soruzi
2017-04-10 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:48.4万
展开全部
  1. 自定义MyRunnable内部类实现Runnable接口

  2. 将Context作为内部类MyRunnable的成员变量

  3. 在主程序中使用并启动子线程,查看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的引用要及时释放,以防止程序内存泄漏!

雪融消散123
2016-09-13 · 超过12用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:21.7万
展开全部
在本类里添加Context context;
构造方法里将context 传入,然后this.context = context;
这样在你这个类里面再写子线程的时候就可以用传过来的context了。
追问
明白了  谢谢
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疯鱼疯语语风雨
2016-12-21
知道答主
回答量:12
采纳率:0%
帮助的人:1.4万
展开全部
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;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式