私は自分の問題を探していますが、まだ見つけていません。ANDROID - サービスで関数を作成してsqliteにデータを挿入する
私はアンドロイドでサービスを作成してきた、と私は私がCRUD
を操作することが可能なサービスを呼び出すが、私はそれを行う方法を知らないとチュートリアル/ refferはとてもscrimpyある時はいつでも私が欲しいです。
ここに私のコードです:here
myService.java
public class myService extends Service {
public Runnable mRunnable = null;
public myService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final Handler mHandler = new Handler();
mRunnable = new Runnable() {
@Override
public void run() {
Log.d("Service jalan", "beneran dah");
mHandler.postDelayed(mRunnable, 30 * 1000);
}
};
mHandler.postDelayed(mRunnable, 30 * 1000);
return super.onStartCommand(intent, flags, startId);
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
startService(new Intent(this, myService.class));
DatabaseHandler db = new DatabaseHandler(this);
/**
* CRUD Operations
* */
// Deleted Contacts
db.deleteAll();
// Inserting Contacts
Log.d("Insert: ", "Inserting ..");
db.addContact(new Contact("Ravi"));
db.addContact(new Contact("Srinivas"));
db.addContact(new Contact("Tommy"));
db.addContact(new Contact("Karthik"));
// Reading all contacts
Log.d("Reading: ", "Reading all contacts..");
List<Contact> contacts = db.getAllContacts();
//db.deleteContact(new Contact(1));
for (Contact cn : contacts) {
String log = "Id: "+cn.getID()+" ,Name: " + cn.getName();
// Writing Contacts to log
Log.d("Name: ", log);
}
}
}
から取得
DatabaseHandler.javaとContact.javaは
私のMainActivityにコード
insert ("Ravi"); insert ("Srinivas"); insert ("Tommy");
を使用する方法がありますか?EDIT
私がしました。このような編集myService.javaクラス:
public class myService extends Service { public Runnable mRunnable = null; IBinder mBinder = new LocalBinder(); @Override public IBinder onBind(Intent intent) { return mBinder; } public class LocalBinder extends Binder { public myService getServerInstance() { return myService.this; } } @Override public int onStartCommand(Intent intent, int flags, int startId) { final Handler mHandler = new Handler(); mRunnable = new Runnable() { @Override public void run() { Log.d("Service jalan", "beneran dah"); mHandler.postDelayed(mRunnable, 30 * 1000); } }; mHandler.postDelayed(mRunnable, 30 * 1000); return super.onStartCommand(intent, flags, startId); } protected void insert(final String name){ DatabaseHandler db = new DatabaseHandler(getApplicationContext()); db.addContact(new Contact(name)); } }
が、私は以下のコードを追加したとき、私はMainActivity.javaで
insert
のエラーをしました:エラー:非静的メソッド 'insert(java.lang.string)'は静的コンテキストから参照できません
myService.insert(this, "Coba lagi ah"); myService.insert(this, "Ini yang kedua");
を呼び出すたびに原因すでにthis siteにエラーを見つけるが、それでも(テントの意図、フラグをint型、int型startId)onStartCommandに呼び出して、あなたの方法を使用し
あなたはサービスを利用していますか? –
@TominB遅刻して申し訳ありません。サービスを利用していますが、サービスからも関数を呼びたいと思っています。それは可能ですか? – flix
DBHelperとデータベース・ハンドラを使用します。ヘルパーfor insert。サービスはActiviryと同様に動作します.. またはこれらの機能のクラスを作成してください –