我想从我的主要活动启动一个服务并使用Serializable传递一个对象。但是,当我在服务中获取对象并调用方法时,它为空,我不知道为什么。 这是我的MainActivity类:
public class MainActivity extends AppCompatActivity implements View.OnClickListener, Serializable
{
private transient SetVocabulary setVocabulary;
private transient Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setVocabulary = new SetVocabulary();
findViewById(R.id.imageDizionario).setOnClickListener(this);
findViewById(R.id.imageGruppi).setOnClickListener(this);
findViewById(R.id.imageImpara).setOnClickListener(this);
Intent intentService = new Intent(MainActivity.this, ServiceChiusuraApp.class);
intentService.putExtra(Constants.codiceMainActivity,this);
Bundle bundleService = new Bundle();
bundleService.putSerializable(Constants.codiceMainActivity,this);
intentService.putExtras(bundleService);
startService(intentService);
}
public SetVocabulary getSetVocabulary()
{
return setVocabulary;
}
@Override
public void onClick(View v)
{
startActivity(intent);
}
}
这是我的服务类:
public class ServiceChiusuraApp extends Service
{
MainActivity mainActivity;
@Override
public IBinder onBind(Intent intent)
{
mainActivity = (MainActivity) intent.getExtras().getSerializable(Constants.codiceMainActivity);
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent)
{
super.onTaskRemoved(rootIntent);
SharedPreferences sharedPref = mainActivity.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet(Constants.codiceSetString,mainActivity.getSetVocabulary());
stopSelf();
}
}
答案 0 :(得分:0)
我需要致电
mainActivity.getSetVocabulary()
在这种情况下,您不想序列化任何内容(特别是Activity
,这是各种错误的。)
相反,请尝试将Activity
绑定到Service
。这样,您的Service
和Activity
就可以进行通信。有关如何从Activity
拨打Service
课程方法,请参阅此question。