public class MainActivity extends AppCompatActivity {
private static class MyHandler extends Handler{
WeakReference<AppCompatActivity> mactivity;
public MyHandler(AppCompatActivity activity)
{
mactivity=new WeakReference<AppCompatActivity>(activity);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MyHandler handler=new MyHandler(this){
@Override
public void handleMessage(Message msg)
{
}
};
}
}
因为你的引用不对
你应该把重写handleMessage()方法放在自定义的MyHandler类里面,不应该放在new 出来的对象里面。
这样:
private static class MyHandler extends Handler {
WeakReference<AppCompatActivity> mActivity;
public MyHandler(Activity activity)
{
mActivity=new WeakReference<AppCompatActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
break;
default:
break;
}
}
}
在创建对象时,直接这样就行了:MyHandler handler=new MyHandler(this);
另外建议你:mactivity改为mActivity,因为前者命名不够规范,不知道你有没注意到studio环境下,该变量有下划线。